如何从C和JAVA代码获取注册传输语言(RTL)代码?

时间:2015-11-10 06:49:46

标签: c gcc compiler-construction

当像GCC这样的编译器编译C程序时,它会生成中间代码。就像我们可以通过将-s选项应用于任何.c文件来获得汇编代码一样,我同样希望获得C和JAVA文件的Register-Transfer-Language(RTL)。如何获得它?

1 个答案:

答案 0 :(得分:2)

三个地址代码称为gimple,请参阅例如https://gcc.gnu.org/onlinedocs/gccint/GIMPLE.html但这似乎是更多的前端 - 后端通信,它可以使用

转储
  gcc  -fdump-tree-gimple <file>  

请参阅http://www.cse.iitb.ac.in/~uday/courses/cs324-05/gccProjects/node4.html

从HLL到深层的一些IR相关倾销选项。可能你想要选项4。

  1. 抽象语法树(AST)。 -fdump-tree-original-raw开关转储给定输入源的AST的文本表示。
  2. Gnu SIMPLE表示(GIMPLE) -fdump-tree-gimple-raw开关转储输入源的GIMPLE表示。
  3. 控制流图(CFG)。 -fdump-tree-cfg-raw交换机转储GIMPLE代码的CFG格式。
  4. 注册传输语言(RTL IR) -da开关使用传递号作为转储文件名的一部分转储输入源程序的RTL IR。
  5. 汇编语言(ASM)。 -S开关转储输入的目标汇编代码。在我们的例子中,这是奔腾汇编语言。