命令行的汇编器已经基本完成,基于@神之觉醒 所公布的指令集。
目前的功能:
1. 翻译汇编语言为机器码
2. 支持C语言格式的注释格式
段注释:/*...*/
行注释://...
3. 支持十进制和十六进制的立即数
十进制立即数写法:
#32 十六进制立即数写法:
#0x20
目前实现的方法是全文遍历解析,次方法存在以下局限性:
1. 难以准确输出语法错误信息的行号
2. 代码大小,行数,规模有限制(目前每行最多支持128字节,汇编文件最大不能超过128KB)
后面有时间打算用逐行解析的实现方法推翻重写。
目前个人认为还需要添加的重要功能有:
1. 标号支持,用于增加跳转指令的灵活性
2. “宏定义”解析,用于减小代码维护的工作量
3. 函数支持,便于模块化编程
4. 数据段定义,便于快速内存访问
...
总之,需要做的还有很多,我的时间不太稳定,有更新会及时同步上来的。
代码如下:
phasm.rar
20.98KB
RAR
49次下载
阅读代码建议用uedit32或sourceinsight,记事本查看时换行符可能不对。
C语言代码我已经加了比较详尽的注释,也没什么复杂的算法,如果还有人不明白我可以重新开楼讲解。
文件列表如下:
Makefile - 用于自动编译的脚本,支持make,make clean,make test三个命令。
phasm.c - 代码文件(C语言)
phasm.exe - 我编译出来的Windows可执行文件
XXXXXXXm - 用于测试编译器功能的测试汇编文件XXXXXXXn - 测试汇编文件生成的二进制可执行文件如果要自己编译:
Linux下直接 make 。
Windows下需要先安装MingW开发环境,然后mingw32-make.exe 改名为 make.exe,然后才能make
MingW下载地址:
XXXXXXXXXXXXXXXXXXXXXt/projects/mingw/目前汇编器在汇编时还会生成一堆调试信息,但这不影响最后的输出。
汇编器使用方法:
1. 自己编写汇编语言,存为一个文件,如:XXXXXXm2. 执行命令 phasm.exe XXXXXXm XXXXXXn这样就能将XXXXXXm汇编输出为XXXXXXn文件下面是目前支持的汇编语句格式:
注意,逗号","前后可以有空格,操作码(如MOV)后面必须有且只有1个空格。
汇编语句以换行为结尾,每行只能写一句汇编指令。
PDF文件如下:
炮灰8位CPU汇编器设计.pdf
330.98KB
PDF
213次下载
预览