2013-03-18 19 views
1

最近有人告訴我如何將C函數編譯爲LLVM字節碼,然後如何將LLVM字節碼轉換爲x86 ASM。作爲一個常規的GNU/gcc用戶,我對此有一些疑問。輕描淡寫地說。試圖抓住C字節碼...... GNU/gcc可以生成像Clang/LLVM這樣的C字節碼嗎?

GNU/gcc是否也會編譯爲字節碼? 可以嗎?我的印象是gcc直接編譯成ASM。如果沒有,有沒有辦法像使用clang命令一樣查看字節碼中介?

~$ clang ~/prog_name.c -S -emit-llvm -o - < ==將顯示prog_name.c的字節碼。

此外,我發現字節碼是拜占庭式的。相反,它使彙編語言看起來像輕讀。換句話說:我不知道它在說什麼。

有沒有人有任何建議或引用模糊地解密字節碼給出的信息?目前我與實際的ASM進行比較和對比,所以說這很慢是一種恭維。或許這一切都很滑稽,但我覺得突破這一點非常具有挑戰性。

+0

http://llvm.org/releases/1.3/docs/CommandGuide/html/llvmgcc.html – 2013-03-18 23:26:36

+0

而對於LLVM語言本身的文檔:http://llvm.org/docs/LangRef.html – 2013-03-18 23:27:46

+0

@RobertHarvey看起來比http://llvm.org/docs/LangRef.html更有幫助......謝謝 – d0rmLife 2013-03-18 23:29:26

回答

3

也許試試看看language reference

據我所知,海灣合作委員會確實有一個知名的紅外線,如​​(另一reference here)。

如果您的意思是說您寧願分析組件輸出而不是IR,那麼您可以看看this question,它描述瞭如何輸出組件文件。

+0

不幸的是,您的GIMPLE鏈接都不適合我。 – d0rmLife 2013-03-18 23:33:24

+0

@ d0rmLife事實上,我相信gcc網站暫時關閉了,無論如何我都鏈接了它們,因爲它們是您想要查看的鏈接(又名官方等) – 2013-03-18 23:34:00

+0

@ d0rmLife gcc站點已備份;鏈接應該工作。 – 2013-03-20 21:30:51