C语言编译过程

转自http://www.cppblog.com/wsgyj/archive/2009/09/09/95697.html

 

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

 

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

 

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

 

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

 

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

 

================================

 

对c语言的编译过程很疑惑,在网上google了一下,还是不太清楚。c的编译是否都要先转换为汇编语言?为什么不直接到机器呢码? 把问题先留这儿,等到学编译原理了再去深究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值