互联网
类型
8.2
豆瓣评分
可以朗读
语音朗读
385千字
字数
2016-06-01
发行日期
展开全部
主编推荐语
贯穿编译、汇编、链接、加载的全过程!
内容简介
本书将带领读者从头开始制作一门语言的编译器。
作者特意为本书设计了CЬ语言,CЬ可以说是C语言的子集,实现了包括指针运算等在内的C语言的主要部分。
本书所实现的编译器就是CЬ语言的编译器, 是实实在在的编译器,而非有诸多限制的玩具。
另外,除编译器之外,本书对以编译器为中心的编程语言的运行环境,即编译器、汇编器、链接器、硬件、运行时环境等都有所提及,介绍了程序运行的所有环节。
目录
- 版权信息
- 译者序
- 前言
- 第1章 开始制作编译器
- 1.1 本书的概要
- 1.2 编译过程
- 1.3 使用 C♭ 编译器进行编译
- 第2章 C♭ 和 cbc
- 2.1 C♭ 语言的概要
- 2.2 C♭ 编译器 cbc 的构成
- 第1部分 代码分析
- 第3章 语法分析的概要
- 3.1 语法分析的方法
- 3.2 解析器生成器
- 3.3 JavaCC 的概要
- 第4章 词法分析
- 4.1 基于 JavaCC 的扫描器的描述
- 4.2 扫描没有结构的单词
- 4.3 扫描不生成 token 的单词
- 4.4 扫描具有结构的单词
- 第5章 基于 JavaCC 的解析器 的描述
- 5.1 基于 EBNF 语法的描述
- 5.2 语法的二义性和 token 的超前扫描
- 第6章 语法分析
- 6.1 定义的分析
- 6.2 语句的分析
- 6.3 表达式的分析
- 6.4 项的分析
- 第2部分 抽象语法树和中间代码
- 第7章 JavaCC 的 action 和抽象语法树
- 7.1 JavaCC 的 action
- 7.2 抽象语法树和节点
- 第8章 抽象语法树的生成
- 8.1 表达式的抽象语法树
- 8.2 语句的抽象语法树
- 8.3 声明的抽象语法树
- 8.4 cbc 的解析器的启动
- 第9章 语义分析(1)引用的消解
- 9.1 语义分析的概要
- 9.2 变量引用的消解
- 9.3 类型名称的消解
- 第10章 语义分析(2)静态类型检查
- 10.1 类型定义的检查
- 10.2 表达式的有效性检查
- 10.3 静态类型检查
- 第11章 中间代码的转换
- 11.1 cbc 的中间代码
- 11.2 IRGenerator 类的概要
- 11.3 流程控制语句的转换
- 11.4 没有副作用的表达式的转换
- 11.5 左值的转换
- 11.6 存在副作用的表达式的转换
- 第3部分 汇编代码
- 第12章 x86 架构的概要
- 12.1 计算机的系统结构
- 12.2 x86 系列 CPU 的历史
- 12.3 IA-32 的概要
- 12.4 数据的表现形式和格式
- 第13章 x86 汇编器编程
- 13.1 基于 GNU 汇编器的编程
- 13.2 GNU 汇编器的语法
- 13.3 传输指令
- 13.4 算术运算指令
- 13.5 位运算指令
- 13.6 流程的控制
- 第14章 函数和变量
- 14.1 程序调用约定
- 14.2 Linux/x86 下的函数调用
- 14.3 Linux/x86 下函数调用的细节
- 第15章 编译表达式和语句
- 15.1 确认编译结果
- 15.2 x86 汇编的对象与 DSL
- 15.3 cbc 的 x86 汇编 DSL
- 15.4 CodeGenerator 类的概要
- 15.5 编译单纯的表达式
- 15.6 编译二元运算
- 15.7 引用变量和赋值
- 15.8 编译 jump 语句
- 第16章 分配栈帧
- 16.1 操作栈
- 16.2 参数和局部变量的内存分配
- 16.3 利用虚拟栈分配临时变量
- 16.4 调整栈访问的偏移量
- 16.5 生成函数序言和尾声
- 6.6 alloca 函数的实现
- 第17章 优化的方法
- 17.1 什么是优化
- 17.2 优化的分类
- 17.3 cbc 中的优化
- 17.4 更深层的优化
- 第4部分 链接和加载
- 第18章 生成目标文件
- 18.1 ELF 文件的结构
- 18.2 全局变量及其在 ELF 文件中的表示
- 18.3 编译全局变量
- 18.4 生成目标文件
- 第19章 链接和库
- 19.1 链接的概要
- 19.2 什么是链接
- 19.3 动态链接和静态链接
- 19.4 生成库
- 第20章 加载程序
- 20.1 加载 ELF 段
- 20.2 动态链接过程
- 20.3 动态加载
- 20.4 GNU ld 的链接
- 第21章 生成地址无关代码
- 21.1 地址无关代码
- 21.2 全局变量引用的实现
- 21.3 链接器调用的实现
- 21.4 从程序解析到执行
- 第22章 扩展阅读
- 22.1 参考书推荐
- 22.2 链接、加载相关
- 22.3 各种编程语言的功能
- 附录
- A.1 参考文献
- A.2 在线资料
- A.3 源代码
- 看完了
展开全部
出版方
人民邮电出版社·图灵出品
图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。