C ++代码是否编译为汇编代码?如果我们有C ++代码,我们能获得汇编代码吗?
答案 0 :(得分:18)
绝大多数C ++编译器都会将C ++源代码转换为目标文件(具有足够控制信息的机器代码可链接到可执行文件中)。它们可能实际上生成汇编语言作为临时步骤,甚至使用单独的汇编程序来处理汇编程序源,但您通常不会看到它。例如,您必须实际使用gcc
标志来让-S
生成汇编代码(.s文件)。通常,你永远不会看到装配。
但是C ++标准没有强制要求编译器输出的最终形式,只是代码在运行时必须以某种方式运行。
事实上,最早的C ++“编译器”实际上生成了C源代码,然后编译了它。
如果您感到受虐待,您可以让您的C ++编译器生成目标代码,Java字节代码甚至GWBASIC。
答案 1 :(得分:17)
您的代码必须由机器理解,并且由于它不在VM中解释或运行,因此首先在汇编中进行转换。您可以在g ++编译选项中使用-S
标志来获取此汇编代码(当然,只要您使用g ++)。
g++ -S -o file.s file.cpp
应该这样做。
答案 2 :(得分:4)
这取决于编译器。 c ++编译的内容没有真正的规则,除非在某些时候它应该可以在计算机上运行。大多数编译器都有一个可以编译成汇编的开关。
使用gcc,您可以添加-S以编译成.asm文件。
对于visual studio,请参阅http://codegem.org/2008/10/generate-assembly-from-c-code-in-visual-studio