第1章
1.1 什么是编译
计算机语言的分类:
- 高级语言
- 类自然语言
- 汇编语言
- 含助记符
- 机器语言
- 可以被计算机直接理解
编译就是将高级语言转化为汇编或者机器语言。
语言处理系统的结构:
- 源程序
- 预处理器:把存储在不同文件中的源程序聚合在一起,并把被称为宏的编写语句转换位原始语句。
- 经过预处理的源程序
- 编译器
- 汇编语言程序
- 汇编器
- 可重定位的机器代码:可重定位:在内存中存放的起始位置不是固定的
- 起始位置+相对位置=绝对位置
- 连接器/加载器
- 加载器:修改可重定位地址,将修改后的指令和数据放到内存中适当的位置
- 连接器:将多个可重定位的机器代码问题链接到一起;解决外部内存地址问题。
- 目标机器代码
1.2 编译系统结构
- 分析部分(源语言有关):
- 语法分析
- 词法分析
- 语义分析
- 桥梁阶段
- 综合部分(目标代码有关):
- 目标代码生成
- 机器代码的优化
1.3 词法分析概述
-
主要任务:一次扫描识别各个单词,确定类型并转化为同一形式
-
token:(种别码, 属性值)
1.4 语法分析概述
从最小元出发构成分析树。
1.5 语义分析概述
-
符号表——收集标识符的属性信息
- 种属 kind
- 类型 type
- 存储位置、长度
- 值
- 作用域
- 参数和返回信息
-
语义检查
也就是语法的检查
1.6 中间代码分析和综合部分概述
常用的中间表示形式:三地址码、语法树