



编译器从 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,并运行脚本来测试所设计的编译器。