对于我的最后一年项目,我正在学习编译器技术,目前我正在尝试使用GCC中间表示(原始 GIMPLE )并使用 GCC 从不同的源文件(C、 Cpp和 Java)获取控制流图- 5.4 .
到目前为止,我可以使用生成*.004t.gimple
和*.011t.cfg
原始文件,-fdump-tree-all-graph-raw
但后来我希望了解更多GIMPLE 语言,所以我搜索了它的语法,我发现了这个:
- 金宝维基
- 简单的
- 通用和简单
- 最新的 GIMPLE Doc(没有语法!!!)
- 海湾合作委员会 FE
- gcc-4.3.6 的语法
- gcc-4.2.1 的语法
- gcc-5.4.0 的 GIMPLE Doc(也没有语法!!!)
所以语言似乎在不断变化,并且有多种格式(高级 GIMPLE、Low_level_GIMPLE、SSA GIMPLE、树),而且语法似乎在版本之间不断变化,但我找不到最新版本的 GIMPLE 语法,特别是一种在GCC-5.4中使用,我无法理解不同的格式。
关于语法的问题:
- 我在哪里可以找到GCC-5.4和更新版本中使用的GIMPLE 语法?
- 它是怎么写的?(在 BNF 或 EBNF 或 ...)
- GCC 如何实现这个语法来生成、解析和理解它生成的 Gimple 文件,然后将它们转换为 RTL?
- 我可以从我生成的文件示例
中用Xtext编写一小部分GIMPLE 语法吗?
*.004t.gimple
关于格式的问题:
- 3 种 Gimple 格式有什么区别?(我似乎无法在 wiki 中找到有关每个文档的详细文档)
*.c.004t.gimple
原始文件中 使用哪种格式*.c.011t.cfg
?(高或低,...)- 哪一个更能代表未经优化的原始源代码的控制流?
谢谢你,