编译原理学习笔记
机器语言:可以被计算机直接理解 汇编语言:引入助记符,依赖特定机器,编写效率低 高级语言:类似于数学定义或自然语言的简洁形式,编写效率高 编译:将高级语言翻译成汇编语言或机器语言的过程。 源程序——>(预处理器)——>经过预处理的源程序——>(编译器)——>汇编语言程序——>(汇编器)——>可重定位的机器代码——>(链接器/加载器)——>目标机器代码 预处理器: 1、把存储在不同文件中的源程序聚合在一起 2、把被称为宏的缩写语句转换为原始语句 可重定位:在内存中存放的起始位置不是固定的 连接器: 1、将多个可重定位的机器代码文件(包括库文件)连接到一起 2、解决外部内存地址问题 加载器: 1、修改可重定位地址 2、将修改后的指令和数据放到内存中适当的位置 编译分为两个阶段: 1、词法分析 2、语法分析:语法分析器从词法分析器输出的token序列中识别出各类短语,并构造语法分析树,语法分析树描述了句子的语法结构 语义分析的主要任务: 1、手机标识符的属性信息 2、语义检查 (1)变量或过程未经声明就使用 (2)变量或过程名重复声明 (3)运算分量类型不匹配 (4)操作符与操作数之间的类型不匹配 1)数组下标不是整数 2)对非数组标量使用数组访问操作符 3)对非过程名使用过程调用操作符 4)过程调用的参数类型或数目不匹配 5)函数返回类型有误 常用的中间表示形式: 1、三地址码