我想知道是否有一些特殊的方法来编译高级代码(最好是从c / c ++或java)来获取相应的汇编代码。
答案 0 :(得分:4)
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.
答案 1 :(得分:1)
假设您使用的是gcc,http://www.delorie.com/djgpp/v2faq/faq8_20.html会告诉您gcc -O2 -S -c foo.c
查看编译器的手册/ doco - 我确定可以选择这样做。
答案 2 :(得分:0)
这些语言完全不同,因为C和C ++通常编译为机器代码,而Java使用虚拟机。您无法将Java合理地编译为汇编语言(如果您想查看机器代码,请使用调试器),但使用C或C ++时,它应该非常简单,具体取决于您的编译器。例如,使用gcc
时,只需给它一个-S
选项,它将生成一个汇编代码文件而不是目标代码。
答案 3 :(得分:0)
许多编译器都可以选择列出生成的汇编代码。例如,gcc具有-S选项,它将在汇编之前停止编译并为您提供汇编文件。