新書推薦:
![了不起的中国冠军:讲给孩子的奥运故事](http://103.6.6.66/upload/mall/productImages/24/30/9787515109213.jpg)
《
了不起的中国冠军:讲给孩子的奥运故事
》
售價:HK$
78.2
![海外中国研究·北京的六分仪:中国历史中的全球潮流](http://103.6.6.69/upload/mall/productImages/y24/8/9787214284570.jpg)
《
海外中国研究·北京的六分仪:中国历史中的全球潮流
》
售價:HK$
78.2
![霍比特人(插图典藏版,150余幅精美全彩插图,原作地图首度汉化为简体中文,2024年全新译本)](http://103.6.6.66/upload/mall/productImages/24/29/9787572614927.jpg)
《
霍比特人(插图典藏版,150余幅精美全彩插图,原作地图首度汉化为简体中文,2024年全新译本)
》
售價:HK$
124.2
![权力的文化与文化的权力:旧制度下的欧洲(1660—1789)](http://103.6.6.66/upload/mall/productImages/24/29/9787545823660.jpg)
《
权力的文化与文化的权力:旧制度下的欧洲(1660—1789)
》
售價:HK$
158.7
![穿透估值:读懂估值中的共识与博弈](http://103.6.6.66/upload/mall/productImages/24/31/9787115646354.jpg)
《
穿透估值:读懂估值中的共识与博弈
》
售價:HK$
90.9
![复利:全球顶尖投资者的31节认知与决策思维课](http://103.6.6.66/upload/mall/productImages/24/30/9787515372976.jpg)
《
复利:全球顶尖投资者的31节认知与决策思维课
》
售價:HK$
103.4
![最后的都铎:中世纪余晖下的宫廷爱欲与权力密码(女性写给女性的女性历史)](http://103.6.6.69/upload/mall/productImages/y24/8/9787559677419.jpg)
《
最后的都铎:中世纪余晖下的宫廷爱欲与权力密码(女性写给女性的女性历史)
》
售價:HK$
101.2
![窄门:纪德三部曲(插图珍藏版)](http://103.6.6.66/upload/mall/productImages/24/29/9787559486912.jpg)
《
窄门:纪德三部曲(插图珍藏版)
》
售價:HK$
158.7
|
編輯推薦: |
- 放下大部头,换一种方式入门编译原理
- 体验一步步实现类C语言的乐趣
- 原版在豆瓣评分9.4
- 被读者誉为现代版“龙书”
|
內容簡介: |
本书是《用Go语言自制解释器》的续篇。在自制解释器时,你已经为Monkey语言实现了类C语法、变量绑定、基本数据类型、算术运算、内置函数、闭包等特性。是时候让Monkey继续成长了!在本书中,Monkey将继续“进化”,并终成长为成熟的程序设计语言。在已有词法分析器、语法分析器和抽象语法树的基础上,你将为Monkey语言定义字节码指令,指定操作数,编写反汇编程序,构建执行字节码的虚拟机。通过动手学习,你将能够体验从无到有实现类C语言的乐趣。
|
關於作者: |
索斯藤·鲍尔(Thorsten Ball)Sourcegraph软件工程师,精通多门程序设计语言,包括Go、C、JavaScript和Ruby,深谙编译原理、系统编程、Unix、数据库等相关技术。现居德国,长期活跃于欧洲各大技术大会。廖彬毕业于中国科学院计算技术研究所,高级语言虚拟机爱好者,在语言虚拟机领域从事开发近十年,曾就职于阿里巴巴和腾讯。
|
目錄:
|
第 1章 编译器与虚拟机 1
1.1 编译器 2
1.2 虚拟机与物理机 5
1.2.1 物理机 6
1.2.2 什么是虚拟机 11
1.2.3 为什么要构建虚拟机 14
1.2.4 字节码 15
1.3 虚拟机与编译器的二元性 17
第 2章 你好,字节码! 19
2.1 第 一条指令 20
2.1.1 以字节作为开端 21
2.1.2 小编译器 26
2.1.3 字节码与反汇编程序 32
2.1.4 回归初心,继续前行 37
2.1.5 给机器上电 40
2.2 栈上加法 46
2.3 连接REPL 52
第3章 编译表达式 55
3.1 栈清理 55
3.2 中缀表达式 60
3.3 布尔类型 64
3.4 比较运算符 69
3.5 前缀表达式 76
第4章 条件语句 83
4.1 跳转 86
4.2 编译条件语句 88
4.3 执行跳转 103
4.4 欢迎回来,Null 值 106
第5章 追踪名称 115
5.1 计划 116
5.2 编译绑定 117
5.2.1 添加符号表 120
5.2.2 在编译器中使用符号 123
5.3 在虚拟机中支持全局变量 126
第6章 字符串、数组和哈希表 132
6.1 字符串 132
6.2 数组 138
6.3 哈希表 142
6.4 索引运算符 149
第7章 函数 156
7.1 一个简单的函数 156
7.1.1 函数表示 157
7.1.2 执行函数的操作码 158
7.1.3 编译函数字面量 161
7.1.4 编译函数调用 176
7.1.5 虚拟机中的函数 179
7.1.6 一点奖励 190
7.2 局部绑定 191
7.2.1 局部绑定操作码 192
7.2.2 编译局部绑定 195
7.2.3 在虚拟机中实现局部绑定 208
7.3 参数 218
7.3.1 编译带参数的函数调用 219
7.3.2 将引用解析为参数 224
7.3.3 虚拟机中的参数 227
第8章 内置函数 237
8.1 使修改变得简单 238
8.2 做出改变:计划 244
8.3 内置函数作用域 245
8.4 执行内置函数 250
第9章 闭包 256
9.1 问题 257
9.2 计划 258
9.3 将一切视为闭包 260
9.4 编译和解析自由变量 271
9.5 运行时创建闭包 283
9.6 递归闭包 288
第 10章 后的测试 303
|
|