我想知道是否有一些特殊的方法來編譯高級代碼(最好從c/C++或java)來獲得相應的彙編代碼。如何編譯高級代碼以獲取彙編代碼?
回答
gcc can dump an assembly listing using -S switch - 它會將彙編代碼發送到擴展名爲.s的文件。例如,以下命令:
gcc -O2 -S -c foo.c
會將生成的彙編代碼留在文件foo.s.
如果要與它被轉換到組裝在一起看到C代碼,使用命令行是這樣的:
gcc -c -g -Wa,-a,-ad [other GCC options] foo.c > foo.lst
將輸出合併的C /組件列表的文件foo.lst 。
大多數編譯器都會支持類似的東西來幫助調試編譯器本身。 For Visual C++, see this guide.
你知道g ++是否有這個功能嗎?如果是的話,你如何使用它? thx – user176121 2009-09-25 11:12:32
是的,它有!檢查g ++的man頁面以獲取更多詳細信息 – vpram86 2009-09-25 11:15:40
g ++的選項應該完全相同 – 2009-09-25 11:16:22
假設你正在使用gcc,http://www.delorie.com/djgpp/v2faq/faq8_20.html告訴你gcc -O2 -S -c foo.c
看看你的編譯器的手動/ DOCO - 我敢肯定有一個選項來做到這一點。
這些語言有很大不同,因爲C和C++通常編譯爲機器碼,而Java使用虛擬機。你不能合理地將Java編譯成彙編語言(如果你想看到機器代碼,使用調試器),但使用C或C++,它應該很容易,這取決於你的編譯器。例如,使用gcc
時,只需給它一個-S
選項,它將生成彙編代碼文件而不是目標代碼。
有一些Java編譯器(如[gcj](http://gcc.gnu.org/java/))可以編譯本機代碼而不是JVM字節碼。你可以看看生成的程序集。 – 2010-04-27 23:40:01
許多編譯器都提供列出生成的彙編代碼的選項。例如,gcc具有-S選項,它將在彙編之前停止編譯併爲彙編文件留下您的編號。
- 1. GMP-彙編代碼?編譯代碼
- 2. 反編譯彙編代碼
- 3. 如何編譯64位彙編代碼
- 4. 如何編譯彙編代碼?
- 5. 彙編&C - 翻譯C'S代碼彙編
- 6. 口譯彙編代碼
- 7. 如何編譯Intel x86彙編代碼以獲取十六進制轉儲?
- 8. 彙編代碼
- 9. 反編譯彙編代碼有多難?
- 10. 理解反編譯彙編代碼
- 11. 編譯C代碼到MIPS彙編
- 12. 不能編譯這個彙編代碼
- 13. 反編譯彙編 - 異常代碼
- 14. 理解反編譯彙編代碼
- 15. Y86彙編代碼編譯問題
- 16. 使用gcc編譯C文件以獲得x86彙編代碼
- 17. 如何將JVM彙編代碼編譯爲字節碼?
- 18. 獲得從彙編代碼
- 19. IROM代碼反編譯成高級代碼
- 20. iOS彙編代碼
- 21. 彙編代碼MOVS
- 22. C++彙編代碼
- 23. 彙編代碼C
- 24. x86彙編代碼
- 25. ARM彙編代碼
- 26. IA32彙編代碼Y86彙編代碼:leal指令
- 27. 轉換GCC彙編代碼爲armasm彙編代碼
- 28. 口譯彙編代碼比較
- 29. JVM高速緩存彙編代碼?
- 30. LINQPad如何編譯代碼?
可能重複[使用GCC生成可讀的程序集?](http://stackoverflow.com/questions/1289881/using-gcc-to-produce-readable-assembly) – Mark 2012-01-06 12:07:29