购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.10
生成起始和收尾代码

编译器从 L Var 语言到x86汇编的最后一步是生成main函数,并将起始和收尾代码包裹在程序的其余部分中,如图2.8所示,该部分已经在2.2节中进行过讨论。

当在Mac OS X上运行时,编译器应该在所有标签前加上下划线(例如,将main更改为_main)。Racket调用(system-type ’os)用于确定编译器运行在哪个操作系统上,它会返回'macosx, 'unix或'windows。

习题2.8 在compiler.rkt中实现prelude_and_conclusion编译遍。在run-tests.rkt脚本中,将以下条目添加到编译遍列表中,然后运行该脚本以测试编译器:

取消对compiler-tests函数的调用的注释(见A.2节),该函数通过执行生成的x86汇编代码来测试整个编译器。它通过调用utilities.rkt中print-x86-class类的print-x86方法,将生成的x86的AST转换为字符串。使用gcc,将提供的runtime.c文件编译runtime.o,并运行脚本来测试所设计的编译器。 Ly9RFxM7rCAORHY8fcEcFF50oquH3niI0wah2E6Ywkwaqk6FSv3+BSypDDvJpZ18

点击中间区域
呼出菜单
上一章
目录
下一章
×