繁体   English   中英

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

[英]How do you compile high-level code to get assembly code?

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

gcc可以使用-S开关转储程序集列表 -它会将程序集代码发送到扩展名为.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。

大多数编译器将支持类似内容,以帮助调试编译器本身。 对于Visual C ++,请参阅本指南。

假设您使用的是gcc,则http://www.delorie.com/djgpp/v2faq/faq8_20.html会告诉您gcc -O2 -S -c foo.c

查看适用于您的编译器的手册/文档-确定有选择的选项。

这些语言的不同之处在于,通常将C和C ++编译为机器代码,而Java使用虚拟机。 您无法明智地将Java编译为汇编语言(如果您想查看机器代码,请使用调试器),但是对于C或C ++,这应该非常容易,具体取决于您的编译器。 例如,使用gcc ,只需为其提供-S选项,它将生成一个汇编代码文件而不是目标代码。

许多编译器都可以选择列出生成的汇编代码。 例如,gcc具有-S选项,该选项将在汇编之前停止编译,并为您提供汇编文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM