第二章 编译和链接

2.1 被隐藏的过程 :预处理 编译 汇编 链接四个过程
预处理:现象就是.c文件变为.i文件 C++就是变为.ii文件 实际内涵就是#define删除,所有宏定义替换源代码里的内容等一些带#的代码处理和注释删除。行号和文件标识也是现在弄的,调试方便定位位置。
编译 现象就是.i变.s 进行语法分析、语义分析以及优化后生产的相应的汇编代码文件,这是核心部分。
汇编 .s 变.o 照着汇编表 一句汇编对应一句机器指令。
链接 看静态链接部分

2.2 编译器做了什么 思考 voliate防止优化在哪个步骤?
首先通过扫描器 进行语法分析【编译环节】 接下来是语法分析器 就是一个所谓的语法树 再有一个语义分析器 【这两个就是对表达式语法层面的分析】 编译器有着很多层次的优化 首先中间语言的生成 就是在源代码级别进行优化 如 2+6 直接优化成8 但是难以在语法树上表示,就语法树转换成一个中间代码 编译器前端产生中间代码 后端把中间代码转化为可执行的目标代码。 后端又包括代码生成器,目标代码优化
代码生成就是把中间代码生成目标机器代码,根据不同机器的字长,寄存器等 最后目标代码优化根据选择合适寻址方式 ,用位移代替乘法,删除多余指令等。

2.3链接器年龄比编译器长

2.4静态链接 作用 各个模块相互引用的部分处理好,链接器就是调整因为引用改变的变量和函数的地址。包括了 地址和空间分配、符号决议、重定位

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值