【问题标题】:Gcc llvm backend guides to make reading source codes a little bit easier?Gcc llvm 后端指南使阅读源代码更容易?
【发布时间】:2017-11-11 23:06:52
【问题描述】:

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

总结:

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

【问题讨论】:

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

标签: gcc llvm compiler-optimization compiler-theory compiler-construction


【解决方案1】:

您的问题在这里跑题了(因为关于查找资源和书籍)。

但是,对于 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 质量-甚至错误和不完整的源代码-也许在github- 在询问之前,根据 GPL 许可。

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

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

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

注意:我的 gcc-melt.org 域将在 2018 年 4 月丢失(我可能不会续订它)。所以看看http://starynkevitch.net/Basile/gcc-melt应该保持更长时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-06
    • 2011-04-14
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    相关资源
    最近更新 更多