编译原理
基本介绍
编译原理是从源语言提取需要的信息,把源语言翻译成目标语言,自动生成满足一定规范的文本。
学习资料
编译原理 该课程主要讲授编译器设计与实现的主要理论和技术。主要内容包括词法分析、语法分析、语法树构造、语义分析、中间代码生成、代码优化、目标代码生成等主要内容。
| 章 | 小节 |
|---|---|
| 第一章 编译概述 | 1.1 编译器历史 1.2 编译器主要结构 1.3 前后端划分及功能 |
| 第二章 词法分析 | 2.1 单词与记号 2.2 正则表达式 2.3 有限自动机 2.4 从正则表达式到有限自动机的转换 2.5 词法分析器的实现 |
| 第三章 语法分析 | 3.1 上下文无关文法 3.2 递归下降分析 3.3 LR分析 3.4 错误处理 3.5 语法分析器自动生成 |
| 第四章 类型检查 | 4.1 类型系统 4.2 属性文法 4.3 语法制导翻译 4.4 符号表管理 |
| 第五章 中间表示 | 5.1 抽象语法树 5.2 线性中间表示 5.3 图中间表示 |
| 第六章 中间代码生成 | 6.1 变量地址分配 6.2 算术表达式翻译 6.3 布尔表达式翻译 6.4 数组、结构体和字符串的翻译 6.5 控制流的翻译 6.6 函数调用的翻译 |
| 第七章 目标代码生成 | 7.1 目标体系结构 7.2 树匹配代码生成 7.3 基于动态规划的代码生成 7.4 寄存器分配 7.5 指令调度 |
| 第八章 代码优化 | 8.1 控制流分析 8.2 数据流分析 8.3 死代码删除 8.4 常量传播 8.5 拷贝传播 8.6 静态单赋值形式 |
书籍推荐
词法分析
词法分析主要还是正则表达式和自动机,可以啃《自动机理论、语言和计算导论》。
编程原理之三大经书
龙书
龙书英文名为《Compilers: Principles, Techniques, and Tools 》,中文名《编译原理技术和工具》
作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman
现在已经是第二版了,2006年8月31日在amazon上架。
斯坦福大学龙书资料站:http://dragonbook.stanford.edu/
龙书第一版出版于1986年,由于出版年代较早,其中包含部分过时的技术并且没有反映一些新的编译技术;
新编的《编译原理》抛弃诸如算符优先分析等过时技术,增加面向对象编译、类型检查等新技术。
虎书
英文名为《Modern Compiler Implementation in C 》,这本是C版,还有java版和ML版。中文名《现代编译原理-C语言描述》
作者:Andrew W.Appel,with Jens Palsberg
虎书出版比较晚,与《编译原理》的知识点差不多,但增加了数据流分析、循环优化、内存管理等内容。
与虎书比,《编译原理》更适合国内的编译原理课程教学。
鲸书
鲸书英文名《Advanced Compiler Design and Implementation》,中文名《高级编译器设计与实现》,作者 Steven S.Muchnick。
鲸书侧重在对编译器后端优化的处理。
在本科阶段的编译教学中旨在让学生对程序设计语言的编译全过程有系统的理解,
因此会介绍编译器后端的处理技术,但不注重优化技术。鲸书更适合作为研究生的教材或参考书。