我开始熟悉gcc和llvm中代码生成和优化算法的实现。任何人都可以就如何在这些编译器中安排材料,文章和讲座提出建议吗?我试图找到用相当简单的语言描述的东西,如优化和代码生成算法的实现或简单的详细解释,但我没有找到。也许有一个详尽的指南,我将能够找到有关被称为精确类和方法的信息,在这些算法编写的文件中,它们运行的基本结构(符号表及其条目,图形,AST,结构)树和rtl在gcc等)。我熟悉Steven Muchnick的“高级编译器设计和实现”,但是在没有一些有用信息的情况下,在ICAN表示法中找到类似gcc和llvm源代码的东西是非常复杂的。
我的目标是熟悉gcc和llvm示例中优化算法和代码生成的实现。所以我想找到以某种方式简化gcc或llvm源代码阅读的材料。我希望这些材料存在。
答案 0 :(得分:2)
你的问题在这里是偏离主题的(因为关于寻找资源和书籍)。
然而,对于GCC,我确实收集了几个参考文献并写了数百张幻灯片,请参阅documentation page of GCC MELT(以及从中指出的许多网页)。
对于LLVM,您需要找到相同的文档(也有很多文档)。
GCC MELT现在是2017年11月 - 一个不活跃的项目(所以我的幻灯片涵盖了较旧的GCC版本)。我可以获得资助以开展类似工作。
也许有一份详尽的指南
您无法找到任何详尽的和最新,因为GCC和Clang都在不断发展。最详尽的仍然是源代码(数百万行,每年增长几个百分点),以及它背后的社区。你需要几年的工作(全职)来理解这些怪物free software项目,你也应该跟随他们的进化。
一旦您花了几周时间阅读GCC并查看源代码,您可以在gcc@gcc.gnu.org
上提出一些确切的问题。如果你试验一些GCC plugin或者在自己的GCC分支上工作,请务必将它free software并立即发布 你的alpha-quality -even buggy and incomplete- source code某地 - 可能在github - 在询问之前,根据GPL许可。
所以我想找到以某种方式简化gcc或llvm源代码阅读的材料
我在GCC MELT上写的大部分内容(特别是不 MELT特定的幻灯片,以及我收集的所有参考文献)都符合这一目标。然而,自动定位材料是GCC的连续变化源代码。
注意:我的gcc-melt.org
域名将在2018年4月丢失(我可能无法续订)。所以请看http://starynkevitch.net/Basile/gcc-melt哪个应该保持更长时间。