绪论
什么是编译
高级语言 --> 汇编语言 --> 机器语言
编译:将高级语言翻译成汇编语言或机器语言的过程
前者称为源语言后者成为目标语言
编译器在语言系统中的位置
预处理
- 把存储在不同文件中的源程序聚合在一起
- 把被称为宏的缩写语句转换为原始语句
可重定位的机器代码
汇编器生成的可重定位起始代码在内存中存放的起始位置不是固定的,所有地址都是相对于起始位置的相对地址
起始位置+相对地址=绝对地址
加载器
修改可重定位地址:将修改后的指令和数据放到内存中的适当位置
链接器
- 将多个可重定位的机器代码文件(包括库文件)连接到一起
- 解决外部内存地址问题(外部地址:一个文件中的代码可能会引用另一个文件的数据对象或过程,相对原文件就是外部地址)
编译系统的结构
- 分析源语言:语义分析 <--语法分析 <--词法分析
- 生成目标语言
前端生成分析源语言翻译成中间表现形式
中间表示形式相当于一个桥梁
后端只与目标语言相关