C ++编译器是否通过汇编语言代码生成机器代码(即,c ++编译器首先将C ++代码转换为汇编语言代码,然后使用汇编语言编译器将其转换为机器代码),或者汇编语言输出生成只是一个选项用于参考或调试目的?
答案 0 :(得分:6)
它不必,但大多数都是这样做的,因为相同的汇编程序(程序)可以用于C / C ++ /无论汇编程序编译器的输出。
例如,g ++首先生成汇编代码(您可以使用-S
开关查看生成的汇编程序。)/FAs
)。
答案 1 :(得分:2)
很久以前他们曾经这样做过,虽然这只是C编译器的典型代表。很久以前,我使用的第一个就是这样工作的。对于为不寻常的硬件和操作系统生成代码的人来说并不罕见,他们节省了编写目标文件生成器和利用现有链接器的成本。
现代编译器不打算将机器代码生成为文本并随后运行汇编程序的额外步骤,它们直接以二进制形式生成机器代码。编译速度优势相当显着,文本并不便宜。从二进制生成文本形式的选项很容易实现。