编译器设计:整型立即数支持
来源:互联网 发布:淘宝店铺第三方 编辑:程序博客网 时间:2024/06/11 23:35
上一篇文章中实现了一个文本打印工具(厚脸皮地叫compiler,^_^),这次加入立即数支持,可以return任意整型值(数据类型目前还不支持)。
这次的do_compiler函数采用了闭包机制,实现如下:
def do_compile(fout): def write_to_file(ret_num): fout.write(func_start) fout.write("\n\tmovl\t$%d," %(ret_num) + "%eax") fout.write("\n\tpopq\t%rbp\n\tretq") fout.write(func_end) return write_to_fileif __name__ == "__main__": fin = open("source.c", 'r') fout = open("out.s", 'w') if fout is False: print "Cannot create OUTPUT file" exit add_header(fout) compiler = do_compile(fout) ret_num = 24 compiler(ret_num) fin.close() fout.close()
还是很弱智,对不对,下一篇,识别return语句,就要加入词法分析了。
Makefile支持
这里实现很简单,没有用到任何隐含规则
test: main.o source.o ld main.o source.o -macosx_version_min 10.12 -lc -o testmain.o: gcc -c main.c -o main.osource.o: gcc -c out.s -o source.oclean: rm -rf *.o test
shell 支持
#!/bin/bashmake clean;make
0 0
- 编译器设计:整型立即数支持
- ARM立即数
- ARM中的立即数
- ARM 的立即数
- ARM立即数 合法性
- 立即数方式
- arm立即数
- arm__ mov立即数
- 关于立即数
- ARM立即数问题
- 基本整型数格式化
- 判断回文整型数
- 整型数的溢出
- 关于 立即数 LDR STR
- ARM汇编立即数合法性
- 判断ARM立即数合法性
- 1194: ARM立即数寻址
- 立即数的存储区
- Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转
- DoTween
- A hard puzzle
- ROS图像相关包
- 约翰·卡马克和他的id Software
- 编译器设计:整型立即数支持
- Reorder List ---LeetCode
- php取周的第一天和最后一天
- C语言双重置换加密
- java 初探(五)
- ECSHOP网站程序可以绕过权限上传一句话木马
- 11章上机
- Android 接入微信支付宝支付
- C语言一次一密