C++代码是否会编译成汇编代码? 如果我们有C++代码,能否得到汇编代码?
C++代码是否会编译成汇编代码? 如果我们有C++代码,能否得到汇编代码?
绝大多数C++编译器将把C++源代码转换为目标文件(具有足够控制信息的机器代码,可以链接到可执行程序中)。它们可能实际上生成汇编语言作为中间步骤,甚至使用单独的汇编器来处理汇编源代码,但通常你看不到这一过程。例如,要让gcc
生成汇编代码(.s文件),你必须通过使用-S
标志来特别指定。通常情况下,你看不到汇编语言。
但C++标准并没有规定编译器输出的最终形式,只是要求代码在运行时能以某种方式表现出来。
事实上,早期的C++“编译器”实际上生成了C源代码,然后再编译。
你可以让C++编译器生成目标代码、Java字节码,甚至是GWBASIC,如果你愿意的话。
gcc -v ...
并仔细查看即可(是的,这意味着gcc
使用/创建临时文件,其中一个是汇编源)。要精确地说:至少gcc
将始终创建汇编源文件(并调用汇编器对其进行编译),但默认行为是清理和删除这些“中间文件”。 - FrankH.你的代码必须被计算机理解,因为它不是被解释器或虚拟机执行,所以首先会被转换成汇编代码。你可以使用-S
标志在g++的编译选项中获取这个汇编代码(当然只要你正在使用g++)。
g++ -S -o file.s file.cpp
应该就能解决问题了。