展开全部

主编推荐语

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

内容简介

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

目录

  • 版权信息
  • 前言
  • 第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 本章小结
  • 参考文献
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    5.0
    一本可以实现自定义编程语言的书

    如果想自定义一种高级语言,并希望使该语言的程序在计算机上正常运行,本书能帮助你较快地达到目的。如果想从实现一个编译器的过程中,加强对编译系统工作流程的理解,并尝试深入研究 GCC 源码,本书也能为你提供很多有价值的参考。

      转发
      评论

    出版方

    机械工业出版社有限公司

    机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。