展开全部

主编推荐语

贯穿编译、汇编、链接、加载的全过程!

内容简介

本书将带领读者从头开始制作一门语言的编译器。

作者特意为本书设计了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 源代码
  • 看完了
展开全部

评分及书评

评分不足
1个评分

出版方

人民邮电出版社·图灵出品

图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。