C语言代码的整个编译过程

1 源文件hello.c(文本)--à预处理器----àhello.i(文本)
预处理器:将#include 包含的文件内容插入该命令处,检查全文处理#define宏定义,处理条件编译命令 #if #endif 将不需要的code屏蔽掉,处理完毕后生成修改后的源代码hello.i.
2 hello.i(文本)----à编译器------àhello.s(汇编程序 文本)
编译器:词法分析语法分析,生成一条条的汇编语句如mov ax,bx,相当于是优化后的汇编语言的源文件。
3 hello.s(汇编文本)------à汇编器----àhello.o(目标文件 二进制)
汇编器:将汇编源文件翻译成对应的机器指令,而且还写入一些东西与机器指令打包成可重新定位目标程序格式的文件hello.o
4 hello.o(目标文件 二进制)----à连接器----àhello.exe(可执行目标文件 二进制)
连接器:比如说hello.o里调用了标准库里函数eg prinf ,连接器的工作就是找到prinf所在的目标文件xx.o或是xx.lib然后将该程序插入到我们的hello.o中,具体来说,其细节是什么,如何找到xx.o呢?是不是只并入用到的函数呢?

5关于hello.exe执行:在OS下运行程序时候,比如说我们double click一个xx.exe的图标,先是OS调用它一个叫做Loader加载器的函数,它读取分析可执行文件中的相关信息后,将其代码和数据拷贝到 Memory中,然后进行一些操作后(?)将控制转移到这个程序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值