《自己动手构造编译系统:编译、汇编与链接》以作者实现的一个基于Intelx86指令集的编译系统为例,结合程序代码的主要部分详细阐述了编译系统的实现原理和过程。本书对编译器、汇编器、链接器、编译优化器涉及的关键算法、数据结构和程序实现流程,以及ELF文件的格式、Intel指令格式均作了详细的说明,并结合大量的图表,展示了编译系统工作过程中代码信息的流动和存储格式的变化。是一本“手把手”教读者实现编译系统的贴心手册。
目录
- 序
- 前言
- 第1章代码背后1
- 从编程聊起 1
- 历史渊源 2
- GCC的工作流程 3
- 1.3.1预编译 4
- 1.3.2编译 5
- 1.3.3汇编 6
- 1.3.4链接 7
- 设计自己的编译系统 8
- 本章小结 9
- 第2章编译系统设计 11
- 2.1编译程序的设计 11
- 2.1.1词法分析 12
- 2.1.2语法分析 13
- 2.1.3符号表管理 14
- 2.1.4语义分析 15
- 2.1.5代码生成 16
- 2.1.6编译优化 16
- 2.2 x86指令格式 18
- 2.3 ELF文件格式 19
- 2.4汇编程序的设计 21
- 2.4.1汇编词法、语法分析 22
- 2.4.2表信息生成 23
- 2.4.3指令生成 24
- 2.5链接程序的设计 25
- 2.5.1地址空间分配 25
- 2.5.2符号解析 26
- 2.5.3重定位 27
- 2.6本章小结 27
- 第3章编译器构造 29
- 3.1词法分析 29
- 3.1.1扫描器 30
- 3.1.2词法记号 32
- 3.1.3有限自动机 36
- 3.1.4解析器 40
- 3.1.5错误处理 53
- 3.2语法分析 55
- 3.2.1文法定义 55
- 3.2.2递归下降子程序 65
- 3.2.3错误处理 70
- 3.3符号表管理 74
- 3.3.1符号表数据结构 75
- 3.3.2作用域管理 78
- 3.3.3变量管理 82
- 3.3.4函数管理 88
- 第4章编译优化147
- 第5章二进制表示191
- 第6章汇编器构造219
- 第7章连接器构造263
- 参考文献