1 绪论
1.1 什么是编译
计算机程序设计语言包括三个层次:
机器语言:machine language 可被计算机直接理解,例如机器语言指令:C706 0000 0002 (此处为16进制形式),其中C706表示移入操作,0000和 0002是两个操作数
汇编语言:assembly language 引入了助记符,如MOV X, 2 ;其MOV是助记符,X和2时量个操作数,汇编语言依赖于特定的机器,非计算机人员使用受限
高级语言:high level language 类似于数学定义或自然语言的简洁形式,如 x=2. 高级语言和汇编语言最终都要翻译成由0和1构成的二进制机器语言才能被执行
编译:将高级语言翻译成汇编语言或机器语言的过程
编译器在语言处理系统中的位置:源程序 - 预处理器 - 经过预处理的源程序 - 编译器 - 汇编语言程序 - 汇编器 - 可重定位的机器代码 - 连接器/加载器 - 目标机器代码
预处理器:把存放在不同文件中的源程序聚合在一起;将称为宏的缩写语句转换为原始语句
可重定位: 在内存中存放的起始位置L是不固定的;起始位置 + 相对位置 = 绝对地址
加载器:修改可重定位地址,将修改后的指令和数据放在内存中的适当位置
链接器:大型项目会分为多个部分进行编译,可重定位的机器代码需要与其他库文件和其他可重定位目标程序链接;还解决外部内存的地址问题
1.2 编译系统的结构
以英译汉为例