对SICP最后两章的简短解释

时间:2010-11-24 12:26:21

标签: compiler-construction sicp

有人能给我一个简明扼要的解释,说明SICP的最后两章(计算机程序的结构和解释),ch4元语言抽象和带寄存器机器的ch5计算吗?

我还想知道这两章的内容是否(以及如何)与标准本科编译课程的内容不同。

1 个答案:

答案 0 :(得分:17)

长免责声明,实际答案如下

如果您真的想要了解如何从头构建编译器的信息,并且需要快速了解所有相关的实用解析,编译,生成和优化技术,那么dragon book将是更好的选择。

如果你想使用翻译从头开始构建一个干净的编程语言,我会推荐弗里德曼的EPL书。

如果您使用学士论文后的内容是对以前两本书中基本问题的所有的更深入理解,那么请继续阅读下面的答案。 SICP是一项教育性工作,它试图用尽可能清晰的语言传达基本概念。它不会详细介绍左递归解析器,常见的子表达式消除,x86 SSE扩展等等。

SICP CH4-5

用于解释所涉及的复杂概念的技术是在您眼前从头开始构建一系列计算机语言。

第4章首先构建一个元循环的Scheme解释器:一个用Scheme本身编写的小型Scheme解释器。这将为您提供递归解释器的基础知识,并构成ch4-5其余部分中构建一系列迷你语言的基础。它回答了如何表示已解析代码,涉及哪些数据结构,如何将主机与基本语言分离等问题。 重要的是,它向您显示语言解释器本身就是另一个计算机程序。 第4章的其余部分向您展示了如何通过修改以前的解释器来改变语言的风格。两个大的是懒惰的评估和逻辑编程。

第5章制作了“注册机器”的粗略模型,以抽象的方式表示您当前的计算机。它们构造了一种小型的寄存器机器语言,可以充当所有意图和目的的汇编语言。他们介绍了下一步所需的所有数据结构和控制流构造:用这种机器语言构建一个方案解释器。不知怎的,仍然类似于元循环翻译。然后他们跳出深层并用他们的寄存器机器语言构建一个方案编译器;完成汇编步骤,尾递归优化,垃圾收集,词法寻址,跟踪等。

虽然SICP构建了玩具口译员和编译器,但这些在概念上足够完整,可以让您在当前实用技术的帮助下快速上手。例如,GCC的中间代码看起来很像SICP的寄存器机器代码,these guys直接在汇编中实现了SICP的ARM微控制器解释器。