自己动手构造编译系统:编译、汇编与链接 - (EPUB全文下载)

文件大小:8.65 mb。
文件格式:epub 格式。
书籍内容:

自己动手系列
自己动手构造编译系统:编译、汇编与链接
范志东 张琼声 著
ISBN:978-7-111-54355-8
本书纸版由机械工业出版社于2016年出版,电子版由华章分社(北京华章图文信息有限公司,北京奥维博世图书发行有限公司)全球范围内制作与发行。
版权所有,侵权必究
客服热线:+ 86-10-68995265
客服信箱:service@bbbvip.com
官方网址:www.hzmedia.com.cn
新浪微博 @华章数媒
微信公众号 华章电子书(微信号:hzebook)
目录

前言
第1章 代码背后
1.1 从编程聊起
1.2 历史渊源
1.3 GCC的工作流程
1.3.1 预编译
1.3.2 编译
1.3.3 汇编
1.3.4 链接
1.4 设计自己的编译系统
1.5 本章小结
第2章 编译系统设计
2.1 编译程序的设计
2.1.1 词法分析
2.1.2 语法分析
2.1.3 符号表管理
2.1.4 语义分析
2.1.5 代码生成
2.1.6 编译优化
2.2 x86指令格式
2.3 ELF文件格式
2.4 汇编程序的设计
2.4.1 汇编词法、语法分析
2.4.2 表信息生成
2.4.3 指令生成
2.5 链接程序的设计
2.5.1 地址空间分配
2.5.2 符号解析
2.5.3 重定位
2.6 本章小结
第3章 编译器构造
3.1 词法分析
3.1.1 扫描器
3.1.2 词法记号
3.1.3 有限自动机
3.1.4 解析器
3.1.5 错误处理
3.2 语法分析
3.2.1 文法定义
3.2.2 递归下降子程序
3.2.3 错误处理
3.3 符号表管理
3.3.1 符号表数据结构
3.3.2 作用域管理
3.3.3 变量管理
3.3.4 函数管理
3.4 语义分析
3.4.1 声明与定义语义检查
3.4.2 表达式语义检查
3.4.3 语句语义检查
3.4.4 错误处理
3.5 代码生成
3.5.1 中间代码设计
3.5.2 程序运行时存储
3.5.3 函数定义与return语句翻译
3.5.4 表达式翻译
3.5.5 复合语句与break、continue语句翻译
3.5.6 目标代码生成
3.5.7 数据段生成
3.6 本章小结
第4章 编译优化
4.1 数据流分析
4.1.1 流图
4.1.2 数据流分析框架
4.2 中间代码优化
4.2.1 常量传播
4.2.2 复写传播
4.2.3 死代码消除
4.3 寄存器分配
4.3.1 图着色算法
4.3.2 变量栈帧偏移计算
4.4 窥孔优化
4.5 本章小结
第5章 二进制表示
5.1 x86指令
5.1.1 指令前缀
5.1.2 操作码
5.1.3 ModR/M字段
5.1.4 SIB字段
5.1.5 偏移
5.1.6 立即数
5.1.7 AT&T汇编格式
5.2 ELF文件
5.2.1 文件头
5.2.2 段表
5.2.3 程序头表
5.2.4 符号表
5.2.5 重定位表
5.2.6 串表
5.3 本章小结
第6章 汇编器构造
6.1 词法分析
6.1.1 词法记号
6.1.2 有限自动机
6.2 语法分析
6.2.1 汇编语言程序
6.2.2 数据定义
6.2.3 指令
6.3 符号表管理
6.3.1 数据结构
6.3.2 符号管理
6.4 表信息生成
6.4.1 段表信息
6.4.2 符号表信息
6.4.3 重定位表信息
6.5 指令生成
6.5.1 双操作数指令
6.5.2 单操作数指令
6.5.3 零操作数指令
6.6 目标文件生成
6.7 本章小结
第7章 链接器构造
7.1 信息收集
7.1.1 目标文件信息
7.1.2 段数据信息
7.1.3 符号引用信息
7.2 地址空间分配
7.3 符号解析
7.3.1 符号引用验证
7.3.2 符号地址解析
7.4 重定位
7.5 程序入口点与运行时库
7.6 可执行文件生成
7.7 本章小结
参考文献

小范从本科毕业设计开始写编译器的实现代码,为他选择这个题目的初衷是希望把编译系统与操作系统、计算机体系结构相关的结合点找出来、弄清楚,为教学提供可用的实例。本科毕业设计结束时小范完成了一个最简单的C语言子集的编译器,生成的汇编程序经过汇编和链接后可以正确执行。研究生期间我们决定继续编译系统实现技术方向的研究工作,主要完成汇编器和链接器这两大模块。小范用一颗好奇、求知的心指引自己,利用一切可以搜集到的资料,用“日拱一卒”的劲头一步一步接近目标。每天的日子都可能有不同的“干扰”——名企的实习、发论文、做项目、参加竞赛、考认证,身边的同学在快速积攒各种经历和成果的时候,小范要保持内心的平静,专注于工作量巨大而是否有回报还未曾可知的事情。三年的时间里,没有奖学金,没有项目经费,有的是没完没了的各种问题,各种要看的书、资料和要完成的代码,同时还要关注大数据平台、编程语言等新技术的发展。
“汇编器完成了”“链接器完成了”,好消息接踵而至。小范说,“把编译器的代码重写一下,加上代码优化吧?”我说“好”,其实,这个“好”说起来容易,而小范那里增加的工作量可想而知,这绝不是那么轻松的事情。优化的基本原理有了,怎么设计算法来实现呢?整个编译器的文法比本科毕业设计时扩充了很多。编译器重写、增加代码优化模块、完成汇编器和链接器,难度和工作量可想而知。每当小范解决一个问题,完成一个功能,就会非常开心地与我分享。看小范完成的一行行规范、漂亮的代码,听他兴奋地讲解,很难说与听郎朗的钢琴协奏曲《黄河之子》、德沃夏克的《自新大陆》比哪一个更令人陶醉,与听交响曲《嘎达梅林》比哪一个更令人震撼。当小范完成链接器后,我说:“小范,写书吧,不写下来太可惜了。”就这样,小范再次如一辆崭新的装甲车,轰隆前行,踏上了笔耕不辍的征程。2015年暑假,细读和修改这部30多万字的书稿,感慨万千,完成编译系统的工作量、四年的甘苦与共、超然物外的孤独都在这字里行间跳跃。写完这部原创书对一个年轻学生来说是极富挑战的,但是 ............

书籍插图:
书籍《自己动手构造编译系统:编译、汇编与链接》 - 插图1
书籍《自己动手构造编译系统:编译、汇编与链接》 - 插图2

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » 自己动手构造编译系统:编译、汇编与链接 - (EPUB全文下载)