阶段SBCL编译器

时间:2013-06-22 13:11:54

标签: compiler-construction common-lisp sbcl

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

1 个答案:

答案 0 :(得分:10)

Phil Khoung的文章Starting to Hack on SBCL包含了如何开始研究SBCL内部的良好描述。在关于编译器的一节中,他写道,

  

查找编译器所在的位置

     

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

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

  

探索源

     

我经常看到新手试图像书一样阅读源代码,一旦他们意识到有很多代码,就试着找出一个好的订单来阅读源代码。我不认为这是最好的方法。 SBCL非常庞大,我怀疑任何人都不会同时掌握整个系统。 RAM’s “The Python Compiler for CMU Common Lisp”作为概述仍然有用,SBCL’s internals manual是一个很好的补充。一旦接近引导逻辑,Christophe Rhodes’s “SBCL: a Sanely-Bootstrappable Common Lisp”有助于理解感叹号。过去,我相信这是优先的[sic]首选,从小开始,学习到足以完成当前任务,并接受一些事情只是工作,而不问(如今)。

您可能对“CMU Common Lisp的Python编译器”中的第8节,编译阶段特别感兴趣。