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

Mer*_*ury 4 c compiler-construction gcc

When any compiler like GCC compiles a C Program it generates intermediate code. Just like we can get Assembly code by applying -s option to any .c file, similarly I want to get Register-Transfer-Language (RTL) for C and JAVA file . How to get it ?

Mar*_*ort 8

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

  gcc  -fdump-tree-gimple <file>  
Run Code Online (Sandbox Code Playgroud)

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

从一些与 IR 相关的倾销选项,从 HLL 到深度。可能你想要选项 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 开关转储输入的目标汇编代码。在我们的例子中,这是奔腾汇编语言。

  • 抱歉,自从我 15 年前离开学校以来,我没有用 Java 做过任何事情,除了咖啡杯。 (2认同)