我找不到任何可以描述单个阶段SBCL编译器的源代码。什么资源,例如论文,描述了SBCL编译器的这些阶段?
发布于 2013-06-23 20:29:14
Phil Khoung的文章Starting to Hack on SBCL很好地描述了如何开始使用SBCL内部。在关于编译器的一节中,他写道,
查找编译器所在的位置
在编译器本身上工作需要更多一点的工作。我认为最好的方法是进入src/compiler/main.lisp并查找compile-component。ir1-phases在组件上循环,并执行高级优化,直到固定点(或者我们厌倦了等待),而%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”就会帮助您理解感叹号。除此之外,我认为最好是从小事做起,学习足够的知识来完成当前的任务,接受某些事情只是有效的,而不是询问(现在)是如何做到的。
您可能对“The Compiler for CMU Common Lisp”中的Python第8节,编译阶段特别感兴趣。
https://stackoverflow.com/questions/17251129
复制相似问题