如何编译高级代码以获取汇编代码?

时间:2009-09-25 11:06:17

标签: assembly compilation

我想知道是否有一些特殊的方法来编译高级代码(最好是从c / c ++或java)来获取相应的汇编代码。

4 个答案:

答案 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选项,它将在汇编之前停止编译并为您提供汇编文件。