C 编译器在生成目标代码时是否必须经过汇编级?

C 编译器在生成目标代码时是否必须经过汇编级?,c,assembly,compiler-construction,object-files,C,Assembly,Compiler Construction,Object Files,可能重复: 例如: gcc -c myprogram.c 上面的命令将生成myprogram.o,这是一个对象文件。我想在内部知道,GCC是否必须经过汇编程序步骤?例如: myprogram.c -> myprogram.asm -> myprogram.o 在您提到的地方,编译器转换为汇编是标准的。至于“他们必须这样做吗?”——一个人可以编写一个不这样做的编译器,但这既不典型,也不太可能发生。编译器的标准是在您提到的地方转换为汇编。至于“他们必须这样做吗?”——一个人可以编写

可能重复:

例如:

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

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

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

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

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

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

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

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


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

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

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


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

您必须为正在编译的代码编写一个机器级别的表示形式,无论是针对虚拟机(因此不称为程序集)还是针对硬件处理器目标(DSP、英特尔处理器、ARM处理器等)。除非,否则您如何执行它?您必须为正在编译的代码编写机器级表示,无论是针对虚拟机(因此不称为汇编)还是针对硬件处理器目标(DSP、英特尔处理器、ARM处理器等)。除非,否则您如何执行它?