自己动手构造编译系统:编译、汇编与链接

自己动手构造编译系统:编译、汇编与链接

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

一本“手把手”教读者实现编译系统的贴心手册。

内容简介

本书是一本描述编译系统实现的书籍。这里使用“编译系统”一词,主要是为了与市面上描述编译器实现的书籍进行区分。本书描述的编译系统不仅包含编译器的实现,还包括汇编器、链接器的实现,以及机器指令与可执行文件格式的知识。因此,本书使用“编译系统”一词作为编译器、汇编器和链接器的统称。本书的目的是希望读者能通过阅读本书清晰地认识编译系统的工作流程,并能自己尝试构造一个完整的编译系统。为了使读者更容易理解和学习编译系统的构造方法,本书将描述的重点放在编译系统的关键流程上,并对工业化编译系统的实现做了适当的简化。如果读者对编译系统实现的内幕感兴趣,或者想自己动手实现一个编译系统的话,本书将非常适合你阅读。

作者简介

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

章节目录

版权信息

前言

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

参考文献

自己动手构造编译系统:编译、汇编与链接是2016年由机械工业出版社华章分社出版,作者张琼声。

得书感谢您对《自己动手构造编译系统:编译、汇编与链接》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
系统分析与设计 电子书
本书介绍系统分析与设计的原理、方法、技术、工具和应用,全书分4个部分,第1部分(第1章)从信息系统的设计模型、应用环境开始,介绍系统分析与设计的定义、过程与流行的技术方法;第2部分(第2~8章)是本书的重点内容,其中第2~4章分别从静态、动态和数据的角度讨论建模的方法和技术,第5~8章则分别从系统整体架构设计、类和包设计、人机界面设计及数据模式设计的角度讨论系统设计的方法和技术;第3部分(第9章)
IT支撑系统与关键技术 电子书
电信运营商的IT支撑系统主要由面向客户服务和业务管理的业务支撑系统(BSS)、面向通信网络管理的运行支撑系统(OSS)、面向企业内部管理的管理支撑系统(MSS)等组成。本书介绍了电信运营商IT支撑系统的概念、标准、基础技术,阐述了运营商IT支撑系统的目标架构及演进策略,并分别介绍了三大IT支撑系统的主要功能、系统组成等。同时介绍了电信运营商发展大数据的优势、大数据关键技术及应用场景,以及电信运营商
推荐系统技术原理与实践 电子书
本书系统介绍推荐系统的技术理论和实践。首先介绍推荐系统的基础知识;然后介绍推荐系统常用的机器学习和深度学习模型;接着重点介绍推荐系统的4层级联架构,包括召回、粗排、精排和重排,以及谷歌、阿里巴巴等大型互联网公司在4层级联架构中的模型设计和实现原理;紧接其后介绍多目标排序在推荐系统中的应用,具体介绍阿里巴巴、谷歌等大型互联网公司的实践;最后从不同角度审视推荐系统,介绍公平性问题、知识蒸馏、冷启动等各
ScratchJr趣味编程动手玩:让孩子用编程讲故事 电子书
本书用寓教于乐的方式教孩子们学习ScratchJr。全书共18个主题背景,或是成语故事,或是寓言故事,还有科技梦想,等等。每一主题都有形象的背景介绍或者情景引入,然后确定各个角色,并且逐个角色去分析编程技巧和方法,并有简单的旁注,孩子们能更直观、有效地阅读。最后总结出编程流程图,引导编程顺序,训练逻辑思维。
Scratch3.0趣味编程动手玩:比赛训练营 电子书
以编程赛事为主题,为孩子们设计了各种有针对性的赛事训练实例。