2015-11-10 92 views
1

當像GCC這樣的編譯器編譯C程序時,它會生成中間代碼。就像我們可以通過對任何.c文件應用-s選項來獲得彙編代碼一樣,我也想獲得用於C和JAVA文件的寄存器傳輸語言(RTL)。如何得到它?如何從C和JAVA代碼獲取寄存器傳輸語言(RTL)代碼?

+0

對不起,但我只是尋找任何腳本或任何工具,但沒有發現任何東西。 – Mercury

+2

你沒有非常努力地搜索:http://calypto.com/en/products/catapult/overview/ –

+0

以及我嘗試使用Verilog工具和bambu,但沒有運氣。 – Mercury

回答

1

這三個地址代碼被稱爲疙瘩,參見例如。 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

從一些IR有關傾銷的選項從HLL深

傾倒。可能您想要選項4.

  1. 抽象語法樹(AST)。 -fdump-tree-original-raw開關爲給定的輸入源轉儲AST的文本表示。
  2. Gnu SIMPLE representation(GIMPLE) -fdump-tree-gimple-raw開關轉儲輸入源的GIMPLE表示。
  3. 控制流程圖(CFG)。 -fdump-tree-cfg-raw開關轉儲GIMPLE代碼的CFG格式。
  4. 寄存器傳送語言(RTL IR) -da開關將輸入源程序的RTL IR與作爲轉儲文件名稱一部分的傳送號一起轉儲。
  5. 彙編語言(ASM)。 -S開關轉儲輸入的目標彙編代碼。在我們的例子中,這是奔騰彙編語言。
+0

謝謝,這正是我所期待的。我們也有這樣的選擇的Java?我們使用javac進行編譯。 – Mercury

+1

對不起,我從未做過任何Java操作,除了自15年前離開學校以來的咖啡杯。 –