C语言的编译过程

用C语言写一个程序,在编译时是不是先把它翻译成汇编,再由汇编程序把它转成机器代码的?

因为我看到书上有句话说:高级语言写的源程序先由编译程序把它翻译成汇编层或是操作系统层。

而我们在对C源程序编译时直接把它编译成.obj文件了,这个过程具体是怎么样的?它经过了汇编成了吗?

  C编译的整个过程很复杂,大致可以分为以下四个阶段:

     预处理阶段在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所包含的文件中预定义代码的替换等,总之这步主要完成一些替换工作,输出是同源文件含义相同但内容不同的文件。

    编译、优化阶段编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编语言。优化包括对中间代码的优化,如删除公共表达式,循环优化等;和对目标代码的生成进行的优化,如如何充分利用机器的寄存器存放有关变量的值,以减少内存访问次数。

    汇编阶段将汇编语言翻译成机器指令。

    链接阶段链接阶段的主要工作是将有关的目标文件连接起来,即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的目标文件成为一个能够被操作系统装入执行的统一整体。 

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-12
一般是
1、预编译,对源代码的宏进行替换,生成中间文件(文本,默认不保留)。
2、翻译为汇编代码(文本,默认不保留)。
3、由汇编器生成二进制文件(.obj)。
4、连接为可执行文件。
因为前两步一般不保留中间文件,所以你看到的是编译器“直接”编译成了.obj文件。本回答被提问者采纳

C语言编译的过程是怎样的?
编译程序工作过程一般划分为五个阶段:词法分析、语法分析、语义分析、优化、目标代码生成。( 1 )词法分析:也就是从左到右一个一个读入源程序,识别一个单词或符号,并进行归类。( 2 )语法分析: 在词法分析基础上,将单词序列分解成各类语法短语,如“程序”,“语句”,“表达式”等。( 3 )...

c语言的编译过程是什么
c语言的编译过程如下:1、预处理:预处理过程实际上是处理“#”的过程:#include包含的头文件直接拷贝到hello.c中;#define定义的宏定义进行替换,同时删除代码中没有的注释部分。2、编译:编译的过程实质上是将高级语言翻译成机器语言的过程。3、汇编:汇编器是将汇编代码转变成机器可以执行的命令,每一...

开发一个c语言程序要经过哪四个步骤
开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。C语言程序可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。1、预处理:输入源程序并保存(.C文件)。2、编译:将源程序翻译为目标文件(.OBJ文件)。...

C语言是怎样被编译成目标程序的呢?
1 写代码。这是最基础的一步,即实现C语言的源文件(.c,必需),和可能的头文件(.h,非必需)。2 编译。将编写好的代码,通过编译工具,转换为目标文件。此步中,会对文件内部及包含的头文件进行语法语义的分析检查。如果出错,则必须返回到1步对代码进行修改,直到没有错误为止。3 链接。将目标文件...

c语言中编译的过程是怎样的?
C语言的编译链接过程是要把我们编写的一个C程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下: 从图上可以看到,...

c语言如何编译并执行一个c语言程序?
1、新建一个工程和.c文件 ,输入头文件和主函数。2、声明被调用的函数,定义变量类型。3、输入整数。4、用一个if语句去判断整数是否为负数,若为负数则用putchar函数输出一个负号。5、调用一个函数。6、定义函数的返回类型和形参类型。7、通过if语句判断该数是否仅剩一位数,若不是则执行else语句。8...

c语言运行的方式
1. 上机输入:首先,通过键盘将C语言源程序输入到计算机中。输入的源程序通常以.c为文件后缀,保存在文件夹中。2. 编译过程:接下来,C语言源程序需要通过编译器进行编译。编译过程包括预处理阶段,在此阶段,编译器会处理源代码中的预处理指令,例如#include指令,它会将指定的头文件内容读入到程序中。

开发一个C语言程序需要经过的四个步骤是什么?
开发C语言程序的四个步骤包括:1. 编辑:在这个阶段,开发者使用文本编辑器或集成开发环境(IDE)编写C语言源代码。源代码通常保存为具有`.c`扩展名的文件。2. 编译:编译器读取源代码文件,并将其转换成机器语言指令的目标代码。这个目标代码通常以`.obj`或`.o`为文件扩展名保存。3. 连接:连接器...

C语言编译的时候会不会先生成中间语言
C语言编译时,会生成中间语言叫做汇编语言,再由汇编生成机器语言!同时,C语言程序编译的过程经过4个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。1)预处理阶段在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理...

C语言编译原理是什么?
1、预处理阶段:主要工作是将头文件插入到所写的代码中,生成扩展名为“.i”的文件替换原来的扩展名为“.c”的文件,但是原来的文件仍然保留,只是执行过程中的实际文件发生了改变。(这里所说的替换并不是指原来的文件被删除)2、汇编阶段:插入汇编语言程序,将代码翻译成汇编语言。编译器首先要检查...

相似回答