我想知道是否有一些特殊的方法来编译高级代码(最好从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