C++代码是否编译为汇编代码?

Ata*_*Ata 16 c++ assembly compilation

C++代码是否编译为汇编代码?如果我们有C++代码,我们能获得汇编代码吗?

pax*_*blo 22

绝大多数C++编译器会将C++源代码转换为目标文件(具有足够控制信息的机器代码可链接到可执行文件中).它们实际上可能会生成汇编语言作为临时步骤,甚至使用单独的汇编程序来处理汇编程序源,但您通常不会看到它.例如,您必须实际gcc使用-S标志来生成汇编代码(.s文件).通常情况下,你永远不会看到装配.

但是C++标准没有强制要求编译器输出的最终形式,只是代码在运行时必须以某种方式运行.

事实上,最早的C++"编译器"实际上生成了C源代码,然后编译了它.

如果你感觉自虐,你可以让你的C++编译器生成目标代码,Java字节代码,甚至GWBASIC.

  • 好吧,你必须编写一个编译器才能做到这一点.对不起,我并不是故意暗示那里有编译器这样做,只是因为写一个可能和标准兼容. (3认同)
  • 内容非常丰富,只是一个问题,如何将C ++代码编译为Java字节码? (2认同)
  • 仅仅因为您没有_看到_ gcc 默认情况下输出程序集源文件并不意味着它_未创建_。只需运行“gcc -v ...”并仔细查看(是的,这意味着“gcc”使用/创建_临时文件_,其中之一是_程序集源_)。准确地说:至少“gcc”将_总是_创建汇编源文件(并在其上调用汇编器),但默认行为是_清理_并删除那些“中间体”。 (2认同)

Ant*_*sse 18

您的代码必须由机器理解,并且由于它不在VM中解释或运行,因此首先在汇编中进行转换.您可以使用-Sg ++编译选项中的标志来获取此汇编代码(只要您使用g ++).

g++ -S -o file.s file.cpp
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.


ste*_*fan 6

这取决于编译器。c++ 编译成什么没有真正的规则,除了在某些时候它应该能够在计算机上运行。大多数编译器都有一个编译为汇编的开关。

使用 gcc,您可以添加 -S 以编译为 .asm 文件。

对于视觉工作室,请参阅http://codegem.org/2008/10/generate-assembly-from-c-code-in-visual-studio

  • 你的链接已失效。 (2认同)