文轩九月图书旗舰店店铺主页二维码
文轩九月图书旗舰店
特价好书,就在文轩网!
微信扫描二维码,访问我们的微信店铺

编译器设计实战:基于RACKET的增量式设计

89.00
运费: 免运费
库存: 7 件
编译器设计实战:基于RACKET的增量式设计 商品图0
编译器设计实战:基于RACKET的增量式设计 商品缩略图0

商品详情

编译器设计实战:基于RACKET的增量式设计

作  者:(美)杰里米·G.希克(Jeremy G.Siek) 著 著 刘晓鸿,李文生 译 译
定  价:89
出 版 社:机械工业出版社
出版日期:2025年10月01日
页  数:208
装  帧:平装
ISBN:9787111791027

编译器向来被视为最难教授和理解的程序之一。大多数编译书籍按阶段逐章讲解,这种结构掩盖了语言特性如何驱动设计选择的逻辑。相比之下,这本创新教材采用增量式方法,让学生能够亲自编写每一行代码。书中引导读者为一种小型但功能强大的编程语言构建自己的编译器,并随着章节推进逐步添加复杂的语言特性。作者阐释了现代编译器背后的核心概念、算法和数据结构,为读者学习后续高级主题奠定了基础。 本书内容严谨且易于理解,提倡读者通过实践来学习,适合作为高等院校编译原理等课程的教材,也适合相关技术人员参考。 本书特色: 将编译器构建的复杂挑战分解为易于掌握的小块内容。 通过将语言特性与编译器设计选择联系起来,增强学习效果。 采用“做中学”方法,加深读者对程序如何映射到计算机硬件的理解。 经过课堂验证,在GitHub上配有源代码。

目录

译者序

前言

第1章 预备知识 1

1.1 抽象语法树 1

1.2 语法 3

1.3 模式匹配 5

1.4 递归函数 6

1.5 解释器 7

1.6 编译器示例:部分求值器 9

第2章 整数与变量 11

2.1 LVar语言 11

2.1.1 通过方法覆盖来扩展解释器 12

2.1.2 LVar语言的定义性解释器 14

2.2 x86Int汇编语言 16

2.3 规划x86汇编语言之旅 19

2.4 专享化变量 23

2.5 移除复杂操作数 24

2.6 详细控制 26

2.7 选择指令 28

2.8 分配变量存储 29

2.9 修补指令 30

2.10 生成起始和收尾代码 31

2.11 挑战:LVar的部分求值器 31

第3章 寄存器分配 33

3.1 寄存器和调用约定 34

3.2 活跃性分析 36

3.3 构建干涉图 39

3.4 利用数独进行图着色 41

3.5 修补指令 46

3.6 起始和收尾代码 47

3.7 挑战:传送偏置 49

3.8 延伸阅读 52

……


内容介绍

本书将带领读者使用Racket语言动手构建编译器,通过循序渐进的方法,在设计和实现编译器的过程中了解基本概念、算法和数据结构等相关知识。本书将每章作为构建编译器的一个基本“步骤”,逐步为编译器添加功能。全书涵盖变量、寄存器、条件、循环、元组、函数、动态类型、通用类型等内容。本书适合作为高等院校编译原理等课程的教材,也适合相关技术人员参考。


(美)杰里米·G.希克(Jeremy G.Siek) 著 著 刘晓鸿,李文生 译 译

杰里米·G.希克( Jeremy G. Siek ),印第安纳大学信息、计算与工程学院的计算机科学教授.他的主要研究方向为编程语言设计、类型系统、使用证明助手的机械化定理证明以及编译器优化.Jeremy曾出版The Boost Graph Library,还设计了C++的受限模板.他发明了渐变类型,这是一种在同一编程语言中整合动态类型和静态类型的类型系统.2009年,他获得美国国家科学基金会(NSF)教师早期职业发展奖,以资助其"弥合原型与生产之间的差距"项目;2010年和2015年,他获得苏格兰信息学与计算机科学联盟( SICSA)杰出访问学者奖学金.他是印第安纳大学编程系统中心的成员.

文轩九月图书旗舰店店铺主页二维码
文轩九月图书旗舰店
特价好书,就在文轩网!
扫描二维码,访问我们的微信店铺

编译器设计实战:基于RACKET的增量式设计

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏