自制编译器

自制编译器

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

    关注微信公众号

因版权原因待上架

编辑推荐

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

内容简介

本书将带领读者从头开始制作一门语言的编译器。笔者特意为本书设计了C?语言,C?可以说是C语言的子集,实现了包括指针运算等在内的C语言的主要部分。本书所实现的编译器就是C?语言的编译器, 是实实在在的编译器,而非有诸多限制的玩具。另外,除编译器之外,本书对以编译器为中心的编程语言的运行环境,即编译器、汇编器、链接器、硬件、运行时环境等都有所提及,介绍了程序运行的所有环节。

作者简介

作者青木峰郎,程序员,著有《Ruby程序设计268技(第2版)》《Ruby源代码完全解说》《Linux程序设计》等多部编程相关著作。并积极参与标准库维护、文档维护等各种各样的活动。

章节目录

版权信息

译者序

前言

第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 源代码

看完了

自制编译器是2016年由人民邮电出版社·图灵出品出版,作者[日]青木峰郎。

得书感谢您对《自制编译器》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
自制操作系统:一种基于状态机的操作系统的假设与实现 电子书
本书共8章:第1章介绍开发该操作系统需要建立的包括编辑、编译和调试程序在内的开发环境;第2章介绍操作系统BIOS启动过程及引导代码实现过程等;第3章介绍操作系统数据抽象实现过程;第4章介绍操作系统操作抽象实现过程;第5章介绍操作系统过程抽象实现过程;第6章介绍操作系统系统抽象实现过程;第7章介绍外部独立编译的应用程序editor实现过程;第8章介绍操作系统在物理机上测试运行的过程。
刺猬的优雅 电子书
巴黎腔,文艺范。一少一老的奇异邂逅,她们如何蜕变、重生……
张力与限界 电子书
“近世中国”系列丛书之一,对1933年-1934年中央苏区革命的研究。
思考的乐趣 电子书
科普作家顾森力作,用简单诙谐的语言烹饪数学佳肴。
毕淑敏专集:提醒幸福 电子书
适读人群 :7-10岁   1. 《美冠纯美阅读书系:提醒幸福(毕淑敏专集)(经典彩绘本)》为美冠纯美阅读书系专集之一。美冠纯美阅读书系共20册,包含了中国现代和当代文坛上具有重要影响力的17位文学大家的经典作品集。他们震撼心灵的华彩美文,滋养着我们的精神生命!   2. 青少年读者不可不读的经典文学作品。萧红自传体长篇小说《呼兰河传》是一部思想内涵丰富的经典之作。为了帮助读者深刻理解作品内涵,小说前附有导语,每章前还附有导读,旨在介绍作品的创作背景、写作背景、写作特点,以及作家作品的影响、成就等。   3. 全新经典彩绘本。本书配有多幅精美插图,图文并茂,让读者在饶有趣味、轻松的阅读氛围里,品味大师的文学经典和精神魅力。装帧设计恢弘大气,颇具收藏价值。{simg}//img30.360buyimg.com/vc/jfs/t991/314/304285477/115281/adcd1d55/5514fb8bN143b0f39.jpg{eimg}