编译与链接

一、编译流程

在这里插入图片描述

二、预处理

C语言编译器在对源代码编译之前的一步操作。

功能作用
头文件展开将程序中所用的头文件用其内容替换头文件名
宏替换扫描程序中的符号,将其替换成宏所定义的内容
去注释去掉程序中的注释
条件编译筛选掉条件编译中的伪命令

三、编译

编译的过程实质上是把高级语言翻译成机器语言的过程。

  1. 词法、语法、语义分析。在确认所有指令都符合规则后,将其翻译成等价的汇编代码。
  2. 代码优化。删除公共表达式,循环优化、复写传播、无用赋值的删除。
  3. 目标代码优化。利用机器的各个硬件寄存器存放的相关变量的值,以减少对内存的访问次数。

四、汇编

汇编过程就是将编译后生成的汇编语言代码翻译成目标机器指令的过程。
汇编目标文件中所存放的也就是与源程序等效的目标的机器语言代码。目标文件由段组成。通常一个目标文件中至少有两个段。

段名作用
代码段程序的指令
数据段程序中要用到的各种全局变量或静态的数据

五、链接

链接的功能是完成文件中各种调用的函数以及库的连接,并将它们一起打包合并形成可执行文件。

  1. 符号决议
    确定所使用的变量要有其唯一的定义。
  2. 重定位
    通过链接器将不同的目标文件中的数据和代码重新分配内存地址,使得CPU能从内存中找到指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值