如何从 C 和 JAVA 代码中获取寄存器传输语言 (RTL) 代码?

How to get Register-Transfer-Language (RTL) Code from C and JAVA Code?

当像 GCC 这样的编译器编译 C 程序时,它会生成中间代码。就像我们可以通过对任何 .c 文件应用 -s 选项来获取汇编代码一样,同样我想获取 C 和 JAVA 文件的注册传输语言(RTL)。如何获得?

三个地址代码称为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 开关转储输入的目标汇编代码。在我们的例子中,这是奔腾汇编语言。