ToT*_*ngs 7 compiler-construction sicp
任何人都可以给我一个清晰简洁的解释SICP的最后两章(计算机程序的结构和解释),ch4元语言抽象和带寄存器机器的ch5计算吗?
我还想知道这两章的内容是否(和如何)与标准本科编译课程的内容不同.
Bee*_*eef 17
长免责声明,实际答案如下
如果你真的想要了解如何从头构建编译器的信息,并且需要快速掌握所有相关的实用解析,编译,生成和优化技术,那么龙书将是更好的选择.
如果你想使用解释器从头开始构建一个干净的编程语言,我会推荐弗里德曼的EPL书.
如果您使用学士论文后的内容是对以前两本书中所有基本问题的更深入理解,那么请继续阅读下面的答案.SICP是一项教育性工作,它试图用尽可能清晰的语言传达基本概念.它不会详细介绍左递归解析器,常见的子表达式消除,x86 SSE扩展等等.
SICP CH4-5
用于解释所涉及的复杂概念的技术是在您眼前从头开始构建一系列计算机语言.
第4章首先构建一个元循环Scheme解释器:一个用Scheme本身编写的小型Scheme解释器.这将为您提供递归解释器的基础知识,并构成ch4-5其余部分中构建一系列迷你语言的基础.它回答了如何表示已解析代码,涉及哪些数据结构,如何将主机与基本语言分离等问题. 重要的是,它向您展示语言解释器本身只是另一个计算机程序. 第4章的其余部分向您展示了如何通过修改以前的解释器来改变语言的风格.两个大的是懒惰的评估和逻辑编程.
第5章对"注册机器"进行了粗略的模型,以抽象的方式表示您当前的计算机.它们构造了一种小型的寄存器机器语言,可以充当所有意图和目的的汇编语言.他们介绍了下一步所需的所有数据结构和控制流构造:用这种机器语言构建一个方案解释器.不知怎的,仍然类似于元循环翻译.然后他们跳出深层并用他们的寄存器机器语言构建一个方案编译器; 完成汇编步骤,尾递归优化,垃圾收集,词法寻址,跟踪等.
尽管SICP构建了玩具解释器和编译器,但这些概念上的完整性足以让您在当前实用技术的帮助下快速上手.例如,GCC的中间代码看起来很像SICP的寄存器机器代码,这些人直接在汇编中实现了SICP的ARM微控制器解释器.