图书介绍
编译器设计 第2版【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- (美)库珀,(美)托克森著;郭旭译 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115301949
- 出版时间:2013
- 标注页数:580页
- 文件大小:416MB
- 文件页数:595页
- 主题词:编译程序-程序设计
PDF下载
下载说明
编译器设计 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 编译概观1
1.1 简介1
1.2 编译器结构4
1.3 转换概述7
1.3.1 前端8
1.3.2 优化器10
1.3.3 后端11
1.4 小结和展望15
第2章 词法分析器17
2.1 简介17
2.2 识别单词18
2.2.1 识别器的形式化20
2.2.2 识别更复杂的单词21
2.3 正则表达式24
2.3.1 符号表示法的形式化25
2.3.2 示例26
2.3.3 RE的闭包性质28
2.4 从正则表达式到词法分析器30
2.4.1 非确定性有限自动机30
2.4.2 从正则表达式到NFA:Thompson构造法33
2.4.3 从NFA到DFA:子集构造法34
2.4.4 从DFA到最小DFA:Hopcroft算法39
2.4.5 将DFA用做识别器42
2.5 实现词法分析器43
2.5.1 表驱动词法分析器44
2.5.2 直接编码的词法分析器48
2.5.3 手工编码的词法分析器50
2.5.4 处理关键字53
2.6 高级主题54
2.6.1 从DFA到正则表达式54
2.6.2 DFA最小化的另一种方法:Brzozowski算法55
2.6.3 无闭包的正则表达式56
2.7 小结和展望57
第3章 语法分析器61
3.1 简介61
3.2 语法的表示62
3.2.1 为什么不使用正则表达式62
3.2.2 上下文无关语法63
3.2.3 更复杂的例子66
3.2.4 将语义编码到结构中69
3.2.5 为输入符号串找到推导71
3.3 自顶向下语法分析71
3.3.1 为进行自顶向下语法分析而转换语法73
3.3.2 自顶向下的递归下降语法分析器81
3.3.3 表驱动的LL(1)语法分析器83
3.4 自底向上语法分析87
3.4.1 LR(1)语法分析算法89
3.4.2 构建LR(1)表94
3.4.3 表构造过程中的错误103
3.5 实际问题106
3.5.1 出错恢复106
3.5.2 一元运算符107
3.5.3 处理上下文相关的二义性108
3.5.4 左递归与右递归109
3.6 高级主题111
3.6.1 优化语法111
3.6.2 减小LR(1)表的规模113
3.7 小结和展望116
第4章 上下文相关分析120
4.1 简介120
4.2 类型系统简介122
4.2.1 类型系统的目标123
4.2.2 类型系统的组件126
4.3 属性语法框架134
4.3.1 求值的方法137
4.3.2 环138
4.3.3 扩展实例138
4.3.4 属性语法方法的问题143
4.4 特设语法制导转换146
4.4.1 特设语法制导转换的实现147
4.4.2 例子148
4.5 高级主题155
4.5.1 类型推断中更困难的问题155
4.5.2 改变结合性157
4.6 小结和展望158
第5章 中间表示162
5.1 简介162
5.2 图IR165
5.2.1 与语法相关的树165
5.2.2 图168
5.3 线性IR173
5.3.1 堆栈机代码173
5.3.2 三地址代码174
5.3.3 线性代码的表示175
5.3.4 根据线性代码建立控制流图176
5.4 将值映射到名字179
5.4.1 临时值的命名179
5.4.2 静态单赋值形式180
5.4.3 内存模型183
5.5 符号表186
5.5.1 散列表187
5.5.2 建立符号表187
5.5.3 处理嵌套的作用域188
5.5.4 符号表的许多用途191
5.5.5 符号表技术的其他用途193
5.6 小结和展望193
第6章 过程抽象198
6.1 简介198
6.2 过程调用200
6.3 命名空间203
6.3.1 类Algol语言的命名空间203
6.3.2 用于支持类Algol语言的运行时结构206
6.3.3 面向对象语言的命名空间210
6.3.4 支持面向对象语言的运行时结构214
6.4 过程之间值的传递219
6.4.1 传递参数219
6.4.2 返回值222
6.4.3 确定可寻址性223
6.5 标准化链接227
6.6 高级主题231
6.6.1 堆的显式管理231
6.6.2 隐式释放234
6.7 小结和展望237
第7章 代码形式245
7.1 简介245
7.2 分配存储位置247
7.2.1 设定运行时数据结构的位置248
7.2.2 数据区的布局249
7.2.3 将值保持在寄存器中252
7.3 算术运算符253
7.3.1 减少对寄存器的需求254
7.3.2 访问参数值255
7.3.3 表达式中的函数调用257
7.3.4 其他算术运算符257
7.3.5 混合类型表达式258
7.3.6 作为运算符的赋值操作258
7.4 布尔运算符和关系运算符259
7.4.1 表示260
7.4.2 对关系操作的硬件支持262
7.5 数组的存储和访问265
7.5.1 引用向量元素266
7.5.2 数组存储布局267
7.5.3 引用数组元素268
7.5.4 范围检查272
7.6 字符串273
7.6.1 字符串表示273
7.6.2 字符串赋值274
7.6.3 字符串连接275
7.6.4 字符串长度276
7.7 结构引用277
7.7.1 理解结构布局277
7.7.2 结构数组278
7.7.3 联合和运行时标记278
7.7.4 指针和匿名值279
7.8 控制流结构281
7.8.1 条件执行281
7.8.2 循环和迭代283
7.8.3 case语句286
7.9 过程调用289
7.9.1 实参求值290
7.9.2 保存和恢复寄存器291
7.10 小结和展望292
第8章 优化简介298
8.1 简介298
8.2 背景299
8.2.1 例子300
8.2.2 对优化的考虑303
8.2.3 优化的时机305
8.3 优化的范围306
8.4 局部优化308
8.4.1 局部值编号309
8.4.2 树高平衡314
8.5 区域优化321
8.5.1 超局部值编号321
8.5.2 循环展开324
8.6 全局优化327
8.6.1 利用活动信息查找未初始化变量328
8.6.2 全局代码置放331
8.7 过程间优化336
8.7.1 内联替换337
8.7.2 过程置放340
8.7.3 针对过程间优化的编译器组织结构344
8.8 小结和展望345
第9章 数据流分析350
9.1 简介350
9.2 迭代数据流分析351
9.2.1 支配性352
9.2.2 活动变量分析355
9.2.3 数据流分析的局限性359
9.2.4 其他数据流问题361
9.3 静态单赋值形式365
9.3.1 构造静态单赋值形式的简单方法366
9.3.2 支配边界366
9.3.3 放置φ函数369
9.3.4 重命名372
9.3.5 从静态单赋值形式到其他形式的转换376
9.3.6 使用静态单赋值形式379
9.4 过程间分析383
9.4.1 构建调用图383
9.4.2 过程间常量传播385
9.5 高级主题388
9.5.1 结构性数据流算法和可归约性388
9.5.2 加速计算支配性的迭代框架算法的执行391
9.6 小结和展望393
第10章 标量优化398
10.1 简介398
10.2 消除无用和不可达代码401
10.2.1 消除无用代码402
10.2.2 消除无用控制流404
10.2.3 消除不可达代码406
10.3 代码移动407
10.3.1 缓式代码移动407
10.3.2 代码提升413
10.4 特化414
10.4.1 尾调用优化415
10.4.2 叶调用优化416
10.4.3 参数提升416
10.5 冗余消除417
10.5.1 值相同与名字相同417
10.5.2 基于支配者的值编号算法418
10.6 为其他变换制造时机421
10.6.1 超级块复制421
10.6.2 过程复制422
10.6.3 循环外提423
10.6.4 重命名423
10.7 高级主题425
10.7.1 合并优化425
10.7.2 强度削减429
10.7.3 选择一种优化序列437
10.8 小结和展望438
第11章 指令选择441
11.1 简介441
11.2 代码生成443
11.3 扩展简单的树遍历方案445
11.4 通过树模式匹配进行指令选择450
11.4.1 重写规则451
11.4.2 找到平铺方案454
11.4.3 工具457
11.5 通过窥孔优化进行指令选择458
11.5.1 窥孔优化458
11.5.2 窥孔变换程序463
11.6 高级主题465
11.6.1 学习窥孔模式465
11.6.2 生成指令序列466
11.7 小结和展望467
第12章 指令调度470
12.1 简介470
12.2 指令调度问题473
12.2.1 度量调度质量的其他方式477
12.2.2 是什么使调度这样难478
12.3 局部表调度478
12.3.1 算法478
12.3.2 调度具有可变延迟的操作481
12.3.3 扩展算法481
12.3.4 在表调度算法中打破平局481
12.3.5 前向表调度与后向表调度482
12.3.6 提高表调度的效率484
12.4 区域性调度485
12.4.1 调度扩展基本程序块486
12.4.2 跟踪调度487
12.4.3 通过复制构建适当的上下文环境488
12.5 高级主题489
12.5.1 软件流水线的策略490
12.5.2 用于实现软件流水线的算法492
12.6 小结和展望495
第13章 寄存器分配499
13.1 简介499
13.2 背景问题500
13.2.1 内存与寄存器500
13.2.2 分配与指派501
13.2.3 寄存器类别502
13.3 局部寄存器分配和指派502
13.3.1 自顶向下的局部寄存器分配503
13.3.2 自底向上的局部寄存器分配504
13.3.3 超越单个程序块506
13.4 全局寄存器分配和指派509
13.4.1 找到全局活动范围511
13.4.2 估算全局逐出代价512
13.4.3 冲突和冲突图513
13.4.4 自顶向下着色515
13.4.5 自底向上着色517
13.4.6 合并副本以减小度数518
13.4.7 比较自顶向下和自底向上全局分配器520
13.4.8 将机器的约束条件编码到冲突图中521
13.5 高级主题523
13.5.1 图着色寄存器分配方法的变体523
13.5.2 静态单赋值形式上的全局寄存器分配525
13.6 小结和展望526
附录A ILOC531
附录B 数据结构540
参考文献559
索引574
热门推荐
- 98854.html
- 2672211.html
- 1203744.html
- 421403.html
- 200666.html
- 515433.html
- 1772313.html
- 2524684.html
- 2019448.html
- 1973112.html
- http://www.ickdjs.cc/book_3325875.html
- http://www.ickdjs.cc/book_2571313.html
- http://www.ickdjs.cc/book_3825182.html
- http://www.ickdjs.cc/book_2558386.html
- http://www.ickdjs.cc/book_1805256.html
- http://www.ickdjs.cc/book_3607288.html
- http://www.ickdjs.cc/book_2063875.html
- http://www.ickdjs.cc/book_530881.html
- http://www.ickdjs.cc/book_301133.html
- http://www.ickdjs.cc/book_1146775.html