《自己动手构造编译系统:编译、汇编与链接》范志东修订版

该资源由用户: 珉林傲柔 上传  举报不良内容

范志东,就职于腾讯数据平台部,负责腾讯大数据平台的产品化,涉及自动化部署、应用调度、交互分析、集群监控、性能调优等,对开源工具Ambari、Hadoop、Spark等有深入的了解。在校期间屡次获得国家奖学金和励志奖学金。独立开发了基于Intelx86指令集的自定义类c语言的编译系统,包括编译器、汇编器与链接器的实现,对计算机程序的加载和运行原理有深刻的认识。深入分析过Linux内核关于CPU功耗方面的代码。爱好广泛,对编程语言、操作系统、编译系统、计算机安全、分布式系统有着浓厚的兴趣。闲暇时会在技术博客上分享自己的学习心得,期望通过互联网把获得知识的快乐心情传递出去。参与了“十一五”校级立项正式出版教材《汁算机操作系统原理》以及全国自学考试教材《计算机应用技术》编写的相关工作。

张琼声,湖北省松滋县人,中国石油大学(华东)计算机与通信工程学院副教授,硕士生导师。主讲课程:《操作系统》《操作系统课程实习》和《嵌入式操作系统》。主持的《计算机操作系统》课程被评为校级精品课,先后获得中国石油大学优秀教学研究成果一、二、三等奖各一项;曾获评中国石油大学优秀教师、山东省优秀学士论文指导教师;主持或参与科研、教研项目十四项。专业及研究兴趣为系统软件开发技术,包括:操作系统、编译系统、计算机系统安全性。发表科研、教学论文二十余篇。参与翻译《深入理解Linux内核》第3版,编著“十一五”校级立项正式出版教材《计算机操作系统原理》、主编全国自学考试教材《计算机应用技术》。

前言

第1章 代码背后 1

1.1 从编程聊起 1

1.2 历史渊源 2

1.3 GCC的工作流程 3

1.3.1 预编译 4

1.3.2 编译 5

1.3.3 汇编 6

1.3.4 链接 7

1.4 设计自己的编译系统 8

1.5 本章小结 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

3.4 语义分析 93

3.4.1 声明与定义语义检查 93

3.4.2 表达式语义检查 95

3.4.3 语句语义检查 97

3.4.4 错误处理 98

3.5 代码生成 101

3.5.1 中间代码设计 102

3.5.2 程序运行时存储 105

3.5.3 函数定义与return语句翻译 108

3.5.4 表达式翻译 110

3.5.5 复合语句与break、continue

语句翻译 120

3.5.6 目标代码生成 132

3.5.7 数据段生成 141

3.6 本章小结 145

第4章 编译优化 147

4.1 数据流分析 149

4.1.1 流图 149

4.1.2 数据流分析框架 152

4.2 中间代码优化 155

4.2.1 常量传播 155

4.2.2 复写传播 167

4.2.3 死代码消除 172

4.3 寄存器分配 177

4.3.1 图着色算法 177

4.3.2 变量栈帧偏移计算 182

4.4 窥孔优化 187

4.5 本章小结 190

第5章 二进制表示 191

5.1 x86指令 191

5.1.1 指令前缀 192

5.1.2 操作码 194

5.1.3 ModR/M字段 196

5.1.4 SIB字段 198

5.1.5 偏移 201

5.1.6 立即数 201

5.1.7 AT&T汇编格式 202

5.2 ELF文件 204

5.2.1 文件头 205

5.2.2 段表 207

5.2.3 程序头表 209

5.2.4 符号表 213

5.2.5 重定位表 214

5.2.6 串表 215

5.3 本章小结 217

第6章 汇编器构造 219

6.1 词法分析 220

6.1.1 词法记号 220

6.1.2 有限自动机 222

6.2 语法分析 223

6.2.1 汇编语言程序 223

6.2.2 数据定义 225

6.2.3 指令 226

6.3 符号表管理 227

6.3.1 数据结构 228

6.3.2 符号管理 230

6.4 表信息生成 234

6.4.1 段表信息 235

6.4.2 符号表信息 238

6.4.3 重定位表信息 239

6.5 指令生成 246

6.5.1 双操作数指令 247

6.5.2 单操作数指令 251

6.5.3 零操作数指令 254

6.6 目标文件生成 255

6.7 本章小结 261

第7章 链接器构造 263

7.1 信息收集 264

7.1.1 目标文件信息 264

7.1.2 段数据信息 266

7.1.3 符号引用信息 268

7.2 地址空间分配 269

7.3 符号解析 272

7.3.1 符号引用验证 274

7.3.2 符号地址解析 276

7.4 重定位 277

7.5 程序入口点与运行时库 281

7.6 可执行文件生成 283

7.7 本章小结 290

参考文献 291


如果您对该资源产生疑虑,欢迎您 点击此处 举报不良内容。 希望我们能共建一个文明社区!感谢您的合作与支持!

扫一扫即可关注本站(PDF之家)微信公众账号
发送您想要找的书籍名称即可找到书籍

Image

本站为非盈利性网站, 但服务器成本高昂, 如果本站内容对您有帮助, 欢迎捐赠, 您的鼓励是我们最大的动力!

大小: 7.63 MB
格式: PDF

声明

本站资源来源于网络及个人用户网盘上传,仅用于分享知识,学习和交流! 本站不保存,不制作,不出售任何图书。请您下载完在24小时内删除。 资源禁用于商业用途!如果您喜欢本站资源,请购买正版,谢谢合作!

标签

编译系统 范志 修订版 编译 汇编 链接 动手 构造 自己

扫码支持一下:

Image Image

猜你喜欢

《自己动手构造编译系统:编译、汇编与链接》范志东修订版

请输入验证码: