Gcc llvm后端指南,使阅读源代码更容易一点?

Gcc llvm后端指南,使阅读源代码更容易一点?,gcc,llvm,compiler-optimization,compiler-theory,compiler-construction,Gcc,Llvm,Compiler Optimization,Compiler Theory,Compiler Construction,我开始熟悉gcc和llvm中代码生成和优化算法的实现。有没有人能给我一个建议,在哪里可以看到关于它在这些编译器中是如何安排的材料、文章、讲座?我试图找到一些用相当简单的语言描述的东西,比如优化和代码生成算法的实现或者简单的详细解释,但我没有找到。也许有一个详尽的指南,我可以找到关于调用的确切类和方法的信息,这些算法是在什么文件中编写的,它们操作的基本结构(符号表及其条目、图形、AST、结构树和gcc中的rtl等)。我熟悉Steven Muchnick的“高级编译器设计和实现”,但在gcc和llv

我开始熟悉gcc和llvm中代码生成和优化算法的实现。有没有人能给我一个建议,在哪里可以看到关于它在这些编译器中是如何安排的材料、文章、讲座?我试图找到一些用相当简单的语言描述的东西,比如优化和代码生成算法的实现或者简单的详细解释,但我没有找到。也许有一个详尽的指南,我可以找到关于调用的确切类和方法的信息,这些算法是在什么文件中编写的,它们操作的基本结构(符号表及其条目、图形、AST、结构树和gcc中的rtl等)。我熟悉Steven Muchnick的“高级编译器设计和实现”,但在gcc和llvm的源代码中找到类似于ICAN表示法中的算法的东西,却没有一些有用的信息,这相当复杂

总结:
我的目标是熟悉gcc和llvm示例上优化算法和代码生成的实现。所以我想找到一些材料,以某种方式简化阅读gcc或llvm的源代码。我希望这些资料存在。

你的问题在这里是离题的(因为关于查找资源和书籍)

然而,对于GCC,我确实收集了一些参考资料,并编写了数百张幻灯片,请参阅(以及许多指向它的网页)

对于LLVM,您需要找到等效的文档(也有很多)

现在——2017年11月——是一个非活动项目(因此我的幻灯片涵盖了较旧的GCC版本)。我可以得到资助从事类似的工作

也许有一个详尽的指南

你不会发现任何详尽和最新的东西,因为GCC和Clang都在显著和持续地发展。最详尽的仍然是源代码(数百万行,每年增长几个百分点),以及它背后的社区。你需要几年的工作(全职)来理解这些怪物项目,你也应该关注它们的发展

一旦您花了几周时间阅读了GCC并查看了源代码,您就可以在
gcc@gcc.gnu.org
。如果您在自己的GCC分支上进行了一些实验或工作,请确保在请求之前,在GPL许可证下立即发布您的阿尔法质量(甚至是有缺陷和不完整的)源代码

顺便说一句,现实生活中的编译器要比教科书中所教的复杂得多,甚至和教科书一样好。没有人能够完全理解GCC(或LLVM)(它对于单个大脑来说太复杂,并且发展得太快)——这也适用于任何数百万行的软件项目

所以我想找到一些资料,以某种方式简化阅读gcc或llvm的源代码

我在GCC MELT上写的大部分内容(尤其是非MELT特定的幻灯片,以及我收集的所有参考资料)都符合这一目标。然而,自动生成的材料是不断变化的GCC源代码


注意:我的
gcc melt.org
域名将于2018年4月丢失(我可能不会续费)。所以,看看哪个应该保持更长时间。

你的具体目标是什么?你为什么这么问?您希望对GCC或LLVM进行什么样的改进或实验?你应该编辑你的问题来改进它(并为你的工作提供额外的背景和动力)修改后的问题,这样我的答案就更合适了。我写了很多关于这个的幻灯片。但你的问题在这里还是有点离题。我的问题正是关于这些材料的,因为我很难找到有用的东西。我的回答应该是有用的,即使我写的或收集的文档不完整并且有点过时。因为源代码是权威性的材料,所以您找不到任何详尽和最新的文档。顺便说一句,你需要做很多工作(几个月才能对GCC有一个小小的了解,几年才能有信心并明白你永远都不会了解它)。