1

可能的重复:
编程语言编译器首先转换为汇编还是直接转换为机器代码?

例如:

gcc -c myprogram.c

上面的命令将生成 myprogram.o,它是一个目标文件。我想在内部知道,GCC 是否必须经过汇编程序步骤?例如:

myprogram.c -> myprogram.asm -> myprogram.o
4

3 回答 3

1

据我所知,是的。gcc 生成的汇编代码用于编写目标文件。

于 2012-01-06T12:25:00.310 回答
0

编译器在您提到的地方转换为程序集是标准的。至于“他们必须这样做吗?” -- 可以编写一个不这样做的编译器,但是现在它既不典型也不可能发生。

于 2012-01-06T12:23:18.047 回答
0

当您调用 gcc 时,您实际上是在为您的目标体系结构生成汇编代码,作为编译器的内部步骤。

尝试使用该-S选项查看编译器生成的汇编代码。

可执行目标文件由链接器生成,链接器将作为您发出的命令的一部分在内部调用。

于 2012-01-06T12:27:08.953 回答