阶段SBCL编译器

Edm*_*ont 6 compiler-construction sbcl common-lisp

我找不到任何可以描述SBCL编译器各个阶段的来源.什么资源,例如论文,描述了SBCL编译器的这些阶段?

Jos*_*lor 10

Phil Khoung的文章" 在SBCL上开始黑客"包含了如何开始研究SBCL内部的一个很好的描述.他写道,在关于编译器的一节中,

找到编译器所在的位置

处理编译器本身需要做更多的工作.我认为最好的方法是进去src/compiler/main.lisp寻找compile-component.ir1-phases在组件上循环并执行高级优化直到fixpoint(或者我们厌倦了等待),同时%compile-component处理转换为IR2然后处理机器代码.自编写Python文件以来,编译管道并没有真正改变,并且每个子阶段都有自己的函数(和文件).M-.听起来很有趣的东西可能是IR2级别的最佳方法.

这里提到的Python文章在本文前面已经链接过了:

探索源头

我经常看到新手尝试像书一样阅读源代码,一旦他们意识到有很多代码,就试着找出一个好的订单来阅读源代码.我不认为这是最好的方法.SBCL非常庞大,我怀疑任何人都不会同时掌握整个系统.RAM的"用于CMU Common Lisp的Python编译器"作为概述仍然有用,而SBCL的内部手册是一个很好的补充.一旦你接近自举逻辑,Christophe Rhodes的"SBCL:一个Sanely-Bootstrappable Common Lisp"有助于理解感叹号.过去,我相信它更适合[sic]首选小型,学习足以完成当前任务,并接受一些事情只是工作,而不问(如今).

你可能会对第8节 " 编译阶段 "中的"CMU Common Lisp的Python编译器" 特别感兴趣.