首页
社区
课程
招聘
[[推荐]《编译原理》 ——编译行天下 神龙耀九州
发表于: 2008-11-21 10:54 23642

[[推荐]《编译原理》 ——编译行天下 神龙耀九州

2008-11-21 10:54
23642
各位尊敬的读者,感谢您对华章公司的关注,龙书《编译原理,第2版》即将由华章公司于2008年12月出版.
关于本书的最新出版进度,敬请您关注华章公司官方博客。

编译原理官方QQ群: 38109786

读者对龙书的评价:
本文来自:http://ocaml.cn/node/79
龙书二又二分之一
二又二分之一是我随便起的名字。
1977年,Alfred V. Aho和Jeffrey D. Ullman写了一本Principles of Compiler Design,封面是一个骑士和一头恐龙,那头龙是绿色的,因此被叫做龙书或绿龙书。
<!--[if !vml]--> <!--[endif]-->
过了9年,1986年,原来的两个作者加上Ravi Sethi,升级了前一本书,不过它不叫Principles of Compiler Design 2nd edition,而是换了个名字,Compilers: Principles, Techniques and Tools,成为另一本书。封面依然沿用骑士和恐龙,那头龙是红色的,因此被叫做龙书二或者红龙书。

又过了9年,1995年,什么都没有发生。
再过了9年,2004年,依然什么都没有发生,但有一些风声出来。
一年后,2005年,盛传龙书将会升级,新书名字叫做21st Century Compilers(现在这个名字被认为是个幽默,但很多图书网站依然可以查到这本书的信息,包括amazon.co.uk和person edition),作者中增加来自斯坦福的Monica S. Lam,将于2006年初出版(现在看来出版时间也是个幽默)。
2005年末到2006年初,新书出来了,不过不是龙书三,而是这里的龙书二又二分之一。Addison-Wesley把龙书二(也就是Compilers 1/e)再次重印(只是reprint而已),而同时在它们的网站上登出部分来自于未来的龙书三的章节(5-11章)以供在线浏览,这就是龙书二又二分之一的由来。
而随着这本书的出现和Addison-Wesley在线网站提供的资讯,我们得知或确认了更多关于龙书三的信息:

•        作者确实增加了Monica S. Lam
•        预计在2007年初出版(希望不再是幽默)(Update: 倒是比预计提前了)
•        名字可能会沿用龙书二的(因此就是Compilers 2/e)
•        新版增加的一些主题:
•           - directed translation
•           - new data flow analyses
•           - parallel machines
•           - JIT compiling
•           - garbage collection
•           - new case studies
•        和龙书系列以前的封面一样,沿用恐龙和武士的设计,这次的龙将是紫色,估计成为紫龙书(庐山升龙霸?)
•        在很多依然列有21st century compilers这一传说中的版本的图书网站,我们可以看到其ISBN号为0321131436,不知道这会不会成为龙书三真正的ISBN。(Update: 现在看来显然不是)

         China-pub购买此书

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
目录
    前言
第1章        引论        2
1.1 语言处理器        2
1.1.1         1.1节的练习        4
1.2 一个编译器的结构        4
1.2.1 词法分析        5
1.2.2 语法分析        6
1.2.3 语义分析        7
1.2.4 中间代码生成        7
1.2.5 代码优化        8
1.2.6 代码生成        8
1.2.7 符号表管理        9
1.2.8 将多个步骤组合成趟        9
1.2.9 编译器构造工具        9
1.3 程序设计语言的发展历程        10
1.3.1 走向高级程序设计语言        10
1.3.2 对编译器的影响        11
1.3.3 1.3节的练习        11
1.4 构建一个编译器的相关科学        12
1.4.1 编译器设计和实现中的建模        12
1.4.2 代码优化的科学        12
1.5 编译技术的应用        13
1.5.1 高级程序设计语言的实现        14
1.5.2 针对计算机体系结构的优化        15
并行性        15
内存层次结构        15
1.5.3 新计算机体系结构的设计        16
RISC        16
专用体系结构        17
1.5.4 程序翻译        17
二进制翻译        17
硬件合成        17
数据查询解释器        18
编译然后模拟        18
1.5.5 软件生产率工具        18
类型检查        19
边界检查        19
内存管理工具        19
1.6 程序设计语言基础        19
1.6.1 静态和动态的区别        20
1.6.2 环境与状态        20
1.6.3 静态作用域和块结构        22
1.6.4 显式访问控制        24
1.6.5 动态作用域        24
1.6.6 参数传递机制        26
值调用        26
引用调用        26
名调用        27
1.6.7 别名        27
1.6.8  1.6节的练习        27
1.7 第一章的总结        28
1.8 第一章的参考书目        29

第2章 一个简单的语法制导翻译器        2
2.1 引言        2
2.2 语法定义        4
2.2.1文法定义        4
2.2.2 推导        5
2.2.3 语法分析树        6
2.2.4 二义性        8
2.2.5 运算符的结合性        8
2.2.6 运算符的优先级        9
2.2.7 2.2节的练习        12
2.3 语法制导翻译        13
2.3.1 后缀表示        14
2.3.2 综合属性        15
2.3.3 简单语法制导定义        17
2.3.4 树的遍历        17
2.3.5 翻译方案        18
2.3.6 2.3节的练习        21
2.4 语法分析        21
2.4.1 自顶向下分析方法        22
2.4.2 预测分析法        25
2.4.3 何时使用є-产生式        26
2.4.4        设计一个预测语法分析器        27
2.4.5        左递归        28
2.4.6 2.4节的练习        29
2.5 简单表达式的翻译器        29
2.5.1抽象语法和具体语法        30
2.5.2调整翻译方案        31
2.5.3非终结符号的过程        33
2.5.4 翻译器的简化        34
2.5.5 完整的程序        35
2.6 词法分析        37
2.6.1 剔除空白和注释        38
2.6.2 预读        39
2.6.3 常量        39
2.6.4 识别关键字和标识符        40
2.6.5 词法分析器        42
2.6.6 2.6节的练习        45
2.7 符号表        46
2.7.1 为每个作用域设置一个符号表        47
2.7.2 符号表的使用        50
2.8 中间代码生成        52
2.8.1 两种中间表示形式        52
2.8.2 语法树的构造        53
2.8.4 三地址码        60
2.8.5 2.8节的练习        66
2.9 第2章的总结        66

第3章 词法分析        2
3.1 词法分析器的作用        2
3.1.1词法分析及解析        4
3.1.2词法单元、模式、词素        5
3.1.3词法单元的属性        6
3.1.4词法错误        7
3.1.5 3.1节的练习        8
3.2 输入缓冲        9
3.2.1缓冲区对        9
3.2.2哨兵标记        10
3.3 词法单元的规约        10
3.3.1 串和语言        11
3.3.2 语言上的运算        13
3.3.3 正则表达式        14
3.3.4 正则定义        17
3.3.5 正则表达式的扩展        18
3.3.6 3.3节的练习        19
3.4 词法单元的识别        22
3.4.1 状态转换图        24
3.4.2 保留字和标识符的识别        26
3.4.3 完成我们的连续性例子        27
3.4.4 基于状态转换图的词法分析器的体系结构        28
3.4.5 3.4节的练习        30
3.5 词法分析器生成工具Lex        34
3.5.1 Lex的使用        34
3.5.2 Lex程序的结构        35
3.5.3 Lex中的冲突解决        38
3.5.4 向前看运算符        38
3.5.5 3.5节练习        40
3.6 有穷自动机        41
3.6.1 不确定的有穷自动机        41
3.6.2 转换表        42
3.6.3 NFA接受输入字符串        43
3.6.4 确定的有穷自动机        44
3.6.5 3.6节的练习        45
3.7 从正则表达式到自动机        46
3.7.1 从NFA到DFA的转换        47
3.7.2 NFA的模拟        50
3.7.3 NFA模拟效率        51
3.7.4 从正则表达式构造NFA        53
3.7.5 字符串处理算法的效率        57
3.7.6 3.7节的练习        60
3.8词法分析器生成工具的设计        60
3.8.1 被生成的词法分析器的结构        61
3.8.2 基于NFA的模式匹配        62
3.8.3 词法分析器使用的DFA        64
3.8.4实现向前看运算符        65
3.8.5 3.8的练习        66
3.9 基于DFA的模式匹配器的优化        67
3.9.1 NFA的重要状态        67
3.9.2 根据抽象语法树计算得到的函数        69
3.9.3 计算nullable、firstpos及lastpos        70
3.9.4 计算followpos        71
3.9.5 根据正则表达式构建DFA        73
3.9.6 最小化一个DFA的状态数        74
3.9.7 词法分析器的状态最小化        78
3.9.8 在DFA模拟中用时间换取空间        79
3.9.9 3.9节的练习        80
3.9.10 第3章的总结        81
3.11 参考文献        83

第4章        语法分析        2
4.1 引论        3
4.1.1 语法分析器的角色        3
4.1.2 代表性的文法        4
4.1.3 语法错误的处理        5
4.1.4 错误恢复策略        6
4.2 上下文无关文法        8
4.2.1 上下文无关文法的正式定义        8
4.2.2符号表示的惯例        9
推导        10
语法分析树和推导        12
二义性        14
4.2.6验证文法生成的语言        15
4.2.7上下文无关文法和正则表达式        16
4.2.8 4.2节的练习        17
写文法        20
4.3.1 词法分析和语法分析        20
4.3.2 消除二义性        21
4.3.3左递归的消除        23
4.3.4提取左公因子        25
4.3.5非上下文无关的语言构造        26
4.3.6 4.3节的练习        27
自顶向下的语法分析        28
4.4.1 递归下降的语法分析        30
4.4.2 FIRST和FOLLOW        31
4.4.3 LL(1)文法        33
4.4.4 非递归的预测分析        37
4.4.5 预测分析中的错误恢复        39
4.4.6 4.4节的练习        42
自底向上的语法分析        44
4.5.1 归约        45
4.5.2 句柄剪枝        46
4.5.3 移入-归约语法分析技术        47
4.5.4移入-归约语法分析中的冲突        49
4.5.5 4.5节的练习        51
LR语法分析技术介绍:简单LR技术        52
4.6.1 为什么使用LR语法分析器?        52
4.6.2 项和LR(0)自动机        53
4.6.3 LR-语法分析算法        59
4.6.4 构造SLR-分析表        63
4.6.5 可行前缀        67
4.6.6 4.6节的练习        68
4.7 更强大的LR语法分析器        70
4.7.1 规范LR(1)项        71
4.7.2 构造LR(1)项集        72
4.7.3 规范LR(1)分析表        76
4.7.4 构造LALR语法分析表        77
4.7.5 LALR语法分析表的高效构造方法        81
4.7.6 LR语法分析表的压缩        86
4.7.7 4.7节的练习        88
4.8 使用二义性文法        89
4.8.1 用优先级和结合性解决冲突        90
4.8.2 “悬空-else”二义性        92
4.8.3 LR语法分析中的错误恢复        94
4.8.4 4.8节的练习        96
4.9 语法分析器的生成工具        98
4.9.1 语法分析器的生成工具Yacc        98
4.9.2 使用Yacc处理二义性文法        102
4.9.3 用Lex创建Yacc的词法分析器        105
4.9.4:Yacc中的错误恢复        106
4.9.5 4.9节的练习        108
4.10:第4章的小结        108
4.11 第4章的参考文献        111

第5章 语法制导的翻译        1
5.1 语法制导定义        2
5.1.1 继承属性和综合属性        2
5.1.2 在一棵语法分析树的结点上对一个SDD求值        4
5.1.3 5.1节的练习        6
5.2 SDD的求值顺序        6
5.2.1 依赖图        6
5.2.2 属性求值的顺序        7
5.2.3:S-属性定义        8
5.2.4 L-属性定义        8
5.2.5 具有受控副作用的语义规则        9
5.2.6 5.2节的练习        11
5.3 语法制导翻译的应用        11
5.3.1 抽象语法树的构造        12
5.3.2 类型的结构        14
5.3.3:5.3节的练习        15
5.4 语法制导的翻译方案        15
5.4.1 后缀翻译方案        16
5.4.2 后缀SDT的语法分析栈实现        16
5.4.3 产生式内部带有语义动作的SDT        17
5.4.4 从SDT中消除左递归        18
5.4.5 L-属性定义的SDT        20
5.4.6 5.4节的练习        24
5.5 实现L-属性的SDD        24
5.5.1 在递归下降语法分析过程中进行翻译        25
5.5.2 边扫描边生成代码        27
5.5.3 L-属性的SDD和LL语法分析        29
5.5.4 L-属性的SDD的自底向上语法分析        32
5.5.5 5.5节的练习        35
5.6 第5章的总结        35
5.7 第5章的参考文献        36

第6章 中间代码生成        2
6.1 语法树的变体        3
6.1.1 表达式的有向无环图        3
6.1.2 构造DAG的值编码方法        4
6.1.3  6.1节的练习        6
6.2 三地址代码        6
6.2.1 地址和指令        7
6.2.2 四元式表示        8
6.2.3 三元式表示        9
6.2.4 静态单赋值形式        10
6.2.5 6.2节的练习        11
6.3 类型和声明        11
6.3.1 类型表达式        12
6.3.2类型等价        13
6.3.3 声明        13
6.3.4 局部变量名的存储布局        14
6.3.5 声明的序列        15
6.3.6 记录和类中的域        16
6.3.7 6.3节的练习        17
6.4 表达式的翻译        17
6.4.1 表达式中的运算        17
6.4.2 增量翻译        19
6.4.3 数组元素的寻址        19
6.4.4 数组引用的翻译        20
6.4.5 6.4节的练习        21
6.5 类型检查        22
6.5.1 类型检查规则        23
6.5.2 类型转换        24
6.5.3 函数和运算符的重载        25
6.5.4 类型推导和多态函数        26
6.5.5 一个合一算法        29
6.5.6 6.5节的练习        31
6.6 控制流        31
6.6.1 布尔表达式        31
6.6.2 短路代码        32
6.6.3 控制流语句        32
6.6.4 布尔表达式的控制流翻译        34
6.6.5 避免冗余的goto指令        35
6.6.6 布尔值和跳转代码        36
6.6.7 6.6节的练习        37
6.7 回填        38
6.7.1 使用回填技术的一趟式目标代码生成        38
6.7.2 布尔表达式的回填        39
6.7.3 控制转移语句        40
6.7.4 Break-, Continue-和Goto-语句        42
6.7.5 6.7节的练习        43
6.8 Switch-语句        44
6.8.1 Switch语句的翻译        44
6.8.2 Switch语句的语法制导翻译        45
6.8.3 6.8节的练习        45
6.9 过程的中间代码        46
6.10 第6章的总结        47
6.11 第6章参考文献        48

第7章 运行时刻环境        2
7.1 存储组织        2
7.1.1 静态和动态存储分配        4
7.2 空间的栈式分配        4
7.2.1 活动树        4
7.2.2 活动记录        6
7.2.3 调用代码序列        7
7.2.4 栈中的变长数据        9
7.2.5 7.2节的练习        10
7.3 栈中非局部数据访问        11
7.3.1 没有嵌套过程时的数据访问        11
7.3.2 和嵌套过程相关的问题        12
7.3.3 一个允许嵌套过程声明的语言        12
7.3.4 嵌套深度        13
7.3.5 访问链        14
7.3.6 处理访问链        15
7.3.7 过程型参数的访问链        15
7.3.8 显示表        16
7.3.9 7.3节的练习        17
7.4 堆管理        18
7.4.1 存储管理子系统        18
7.4.2 一台计算机的存储层次结构        19
7.4.3 程序中的局部性        20
7.4.4 碎片整理        21
7.4.5 人工回收请求        24
7.4.6 7.4节的练习        26
7.5 垃圾回收介绍        26
7.5.1 垃圾回收的设计目标        27
7.5.2 可达性        28
7.5.3 引用计数垃圾回收器        30
7.5.4 7.5节的练习        31
7.6 基于跟踪的回收的介绍        31
7.6.1 基本的标记并清扫回收器        31
7.6.2 基本抽象        33
7.6.3 标记并清扫算法的优化        34
7.6.4 标记并压缩的垃圾回收器        35
7.6.5 拷贝回收器        37
7.6.6开销的比较        39
7.6.7 7.6节的练习        39
7.7 短停顿垃圾回收        40
7.7.1 增量式垃圾回收        40
7.7.2 增量式可达分析        41
7.7.3 部分回收基础        43
7.7.4 世代垃圾回收        44
7.7.5 列车算法        45
7.7.6 7.7节的练习        48
7.8 垃圾回收中的高级论题        48
7.8.1 并行和并发垃圾回收        49
7.8.2 部分的对象重新定位        50
7.8.3类型不安全的语言的保守垃圾回收        51
7.8.4 弱引用        51
7.8.5 7.8节的练习        52
第7章总结        52
7.10 第7章的参考文献        54

第8章        代码生成        2
8.1 代码生成器设计中的问题        4
8.1.1 代码生成器的输入        4
8.1.2 目标程序        4
8.1.3 指令选择        5
8.1.4 寄存器分配        6
8.1.5 求值顺序        8
8.2 目标语言        8
8.2.1 一个简单的目标机模型        8
8.2.2 程序和指令的代价        10
8.2.3 8.2节的练习        11
8.3 目标代码中的地址        13
8.3.1 静态分配        13
8.3.2 栈分配        14
8.3.3 名字的运行时刻地址        17
8.3.4 8.3节的练习        18
8.4 基本块和流图        19
8.4.1 基本块        19
8.4.2 后续使用信息        21
8.4.3 流图        22
8.4.4 流图的表示方式        23
8.4.5 循环        23
8.4.6 8.4节的练习        24
8.5 基本块的优化        24
8.5.1 基本块的DAG图表示        24
8.5.2 寻找局部公共子表达式        25
8.5.3 死代码消除        26
8.5.4.代数恒等式的使用        26
8.5.5 数组指引的表示        28
8.5.6 指针赋值和过程调用        29
8.5.7 从DAG图到基本块的重组        29
8.5.8 8.5节的练习        30
8.6 一个简单的代码生成器        31
8.6.1 寄存器和地址描述符        32
8.6.2 代码生成算法        33
8.6.3 函数getReg的设计        35
8.6.4 8.6节的练习        36
8.7 窥孔优化        36
8.7.1 消除冗余的加载和保存指令        37
8.7.2 消除不可达代码        37
8.7.3 控制流优化        38
8.7.4 代数简化和强度消减        38
8.7.5 使用机器特有的指令        39
8.7.6 8.7节的练习        39
8.8 寄存器分配和指派        39
8.8.1 全局寄存器分配        40
8.8.2 使用计数        40
8.8.3 外层循环的寄存器指派        41
8.8.4 通过图着色方法进行寄存器分配        42
8.8.5 8.8节的练习        43
8.9 通过树重写进行指令选择        43
8.9.1 树翻译方案        43
8.9.2 通过覆盖一个输入树来生成代码        45
8.9.3 通过扫描进行模式匹配        47
8.9.4 用于语义检查的子过程        48
8.9.5 通用的树匹配方法        49
8.9.6 8.9节的练习        50
8.10:表达式的优化代码生成        50
8.10.1 Ershov数        51
8.10.2 从带标号的表达式树生成代码        51
8.10.3 寄存器数量不足时的表达式求值        53
8.10.4 8.10节的练习        54
8.11 使用动态规划的代码生成        55
8.11.1 连续求值        55
8.11.2 动态规划的算法        56
8.11.3 8.11节的练习        58
8.12 第8章的小结        58
8.13 第8章的参考书目        59

第9章 机器无关优化        2
9.1 优化的主要来源        3
9.1.1 冗余的原因        3
9.1.2 一个贯穿本章的例子        3
9.1.3 保持语义不变的转换        4
9.1.4 全局公共子表达式        5
9.1.5 复制传播        6
9.1.6 死代码消除        6
9.1.7 代码移动        7
9.1.8 归纳变量和强度消减        7
9.1.9 9.1节的练习        9
9.2 数据流分析简介        9
9.2.1 数据流抽象        10
9.2.2 数据流分析方案        11
9.2.3 基本块上的数据流方案        12
9.2.4 到达定值        12
9.2.5 活跃变量分析        18
9.2.6 可用表达式        19
9.2.7 小结        22
9.2.8 9.2节的练习        22
9.3 数据流分析基础        24
9.3.1 半格        25
9.3.2 传递函数        28
9.3.3 通用框架的迭代算法        30
9.3.4 数据流解的含义        31
9.3.5 9.3节的练习        33
9.4 常量传播        34
9.4.1 常量传播框架的数据流值集        35
9.4.2 常量传播框架的交函数        35
9.4.3 常量传播框架的传递函数        35
9.4.4 常量传递框架的单调性        36
9.4.5 常量传播框架的不可分配性        37
9.4.6 对算法结果的解释        37
9.4.7 9.4节的练习        38
9.5 部分冗余消除        39
9.5.1 冗余的来源        39
9.5.2 可能消除所有冗余吗?        41
9.5.3 懒惰代码移动问题        42
9.5.4 表达式的预期执行        43
9.5.5 懒惰代码移动算法        43
9.5.6 9.5节的练习        49
9.6 流图中的循环        50
9.6.1支配结点        50
9.6.2 深度优先排序        52
9.6.3 深度优先生成树中的边        54
9.6.4 回边和可归约性        55
9.6.5 流图的深度        56
9.6.6 自然循环        56
9.6.7 迭代数据流算法的收敛速度        57
9.6.8 9.6节的练习        59
9.7 基于区域的分析        61
9.7.1 区域        61
9.7.2 可归约流图的区域层次结构        62
9.7.3 基于区域的分析技术的概览        64
9.7.4 有关传递函数的必要假设        64
9.7.5 一个基于区域的分析算法        66
9.7.6 处理不可归约流图        69
9.7.7 9.7节的练习        70
9.8 符号分析        70
9.8.1 参考变量的仿射表达式        71
9.8.2 数据流问题的公式化        73
9.8.3 基于区域的符号化分析        75
9.8.4 9.8节的练习        78
9.9 第9章的总结        79
9.10 第9章的参考书目        82

第10章 指令级并行        2
10.1 处理器体系结构        2
10.1.1  指令流水线和分支延时        3
10.1.2 流水线执行        3
10.1.3 多指令发送        3
10.2 代码调度约束        4
10.2.1 数据依赖        4
10.2.2 寻找内存访问之间的依赖关系        5
10.2.3 寄存器使用和并发性之间的折衷处理        6
10.2.4 寄存器分配阶段和代码调度阶段之间的顺序        8
10.2.5 控制依赖        8
10.2.6 对投机执行的支持措施        9
10.2.7 一个基本的机器模型        10
10.2.8 10.2节的练习        11
10.3 基本块调度        12
10.3.1 数据依赖图        12
10.3.2 基本块的列表调度方法        13
10.3.3 带有优先级的拓扑排序        14
10.3.4 10.3节的练习        15
10.4 全局代码调度        16
10.4.1 基本的代码移动        16
10.4.2 向上的代码移动        17
10.4.3 向下的代码移动        18
10.4.4 更新数据依赖关系        19
10.4.5 全局调度算法        19
10.4.6 高级代码移动技术        21
10.4.7 和动态调度器的交互        22
10.4.8 10.4节的练习        22
10.5 软件流水线化        23
10.5.1 引言        23
10.5.2 循环的软件流水线化        24
10.5.3 寄存器分配和代码生成        26
10.5.4 Do-Across循环        26
10.5.5 软件流水线化的目标和约束        27
10.5.6 一个软件流水线化算法        29
10.5.7 对无环数据依赖图进行调度        30
10.5.8 对有环的数据依赖图进行调度        31
10.5.9 对流水线化算法的改进        35
10.5.10 模组变量扩展        35
10.5.11 条件语句        38
10.5.12 软件流水线化的硬件支持        38
10.5.13 10.5节的练习        39
10.6 第10章的总结        40
10.7 第十章的参考数目        41

第11章 并行性和局部性的优化        2
11.1 基本概念        4
11.1.1 多处理器        5
11.1.2 应用中的并行性        6
11.1.3 循环层次的并行性        7
11.1.4 数据局部性        8
11.1.5 仿射变换理论的介绍        9
11.2 矩阵乘法:一个深入的例子        12
11.2.1 矩阵相乘算法        12
11.2.2 优化        14
11.2.3 高速缓存干扰        16
11.2.4 11.2节的练习        16
11.3 迭代空间        16
11.3.1 从循环嵌套结构中构建迭代空间        17
11.3.2 循环嵌套结构的执行顺序        18
11.3.3 不等式组的矩阵表示方法        19
11.3.4 混合使用符号常量        19
11.3.5 控制执行的顺序        20
11.3.6 坐标轴的变换        23
11.3.7 11.3节的练习        23
11.4 仿射的数组下标        25
11.4.1 仿射访问        25
11.4.2 实践中的仿射访问和非仿射访问        26
11.4.3 11.4节的练习        26
11.5 数据复用        27
11.5.1 数据复用的类型        28
11.5.2 自复用        28
11.5.3 自空间复用        31
11.5.4 组复用        32
11.5.5 11.5节的练习        34
11.6 数组数据依赖分析        35
11.6.1 数组访问的数据依赖关系的定义        36
11.6.2 整数线性规划        37
11.6.3 GCD测试        37
11.6.4 解决整数线性规划的启发式规则        39
11.6.5 解决一般性的整数线性规划问题        41
11.6.6 小结        43
11.6.7 11.6节的练习        43
11.7 寻找无同步的并行性        44
11.7.1 一个介绍性的例子        45
11.7.2 仿射空间分划        46
11.7.3 空间分划约束        47
11.7.4 求解空间分划约束        49
11.7.5 一个简单的代码生成算法        52
11.7.6 消除空迭代        54
11.7.7 从最内层循环中消除条件测试        55
11.7.8 源代码转换        56
11.7.9 11.7节的练习        58
11.8 并行循环之间的同步        59
11.8.1 固定多个同步运算        59
11.8.2 程序依赖图        60
11.8.3 层次结构化的时间        62
11.8.4 并行化算法        63
11.8.5 11.8的练习        63
11.9 流水线化技术        64
11.9.1 什么是流水线化?        64
11.9.2 连续过松弛方法:一个例子        65
11.9.3 完全可交换循环        66
11.9.4 把完全可交换循环流水线化        67
11.9.5 一般性的理论        68
11.9.6 时间分划约束        68
11.9.7 用Farkas引理解时间分划约束        71
11.9.8 代码转换        73
11.9.9 具有最小同步量的并行性        76
11.9.10 11.9节的练习        78
11.10 局部性优化        79
11.10.1 计算结果数据的时间局部性        80
11.10.2 数组收缩        80
11.10.3 分划单元的交织        81
11.10.5 11.10节的练习        84
11.11 仿射转换的其它用途        85
11.11.1 分布式内存计算机        85
11.11.2 多指令发送处理器        85
11.11.3 向量和SIMD指令        86
11.11.4 数据预取        87
11.12 第11章的总结        87
11.13 第11章的引用        89

第12章 过程间分析        2
12.1 基本概念        2
12.1.1 调用图        3
12.1.2 上下文相关        4
12.1.3 调用串        5
12.1.4 基于克隆的上下文相关分析        6
12.1.5 基于摘要的上下文相关分析        6
12.1.6 12.1节的练习        8
12.2 为什么需要过程间分析?        9
12.2.1 虚例程调用        9
12.2.2 指针别名分析        9
12.2.3 并行化        10
12.2.4 软件错误和漏洞的检测        10
12.2.5 SQL注入        10
12.2.6 缓冲区溢出        11
12.3 数据流的一种逻辑表示方式        12
12.3.1 Datalog介绍        13
12.3.2 Datalog规则        14
12.3.3 内涵断言和外延断言        15
12.3.4 Datalog程序的执行        17
12.3.5 Datalog程序的增量执行        18
12.3.6 有问题的Datalog规则        19
12.3.7 12.3节的练习        20
12.4 一个简单的指针分析算法        22
12.4.1 指针分析为什么困难        22
12.4.2 一个指针和引用的模型        23
12.4.3 控制流无关性        24
12.4.4 在Datalog中的表示方法        24
12.4.5 使用类型信息        25
12.4.6 12.4节的练习        26
12.5 上下文无关的过程间分析        27
12.5.1 一个例程调用的效果        27
12.5.2 用Datalog来发现调用图        28
12.5.3 动态加载和反射        29
12.5.4 12.5节的练习        30
12.6 上下文相关指针分析        30
12.6.1 上下文和调用串        31
12.6.2 在Datalog规则中加入上下文信息        32
12.6.3 关于相关性的更多讨论        33
12.6.4 12.6节的练习        33
12.7 使用BDD的Datalog的实现        33
12.7.1 二分决策图        34
12.7.2 对BDD的转换        35
12.7.3 用BDD表示关系表        35
12.7.4 用BDD操作实现关系操作        36
12.7.5 在指针指向分析中使用BDD        38
12.7.6 12.7节的练习        38
12.8 第12章的小结        39
12.9 第12章的参考书目        40
2008-11-21 11:13
0
雪    币: 2316
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
广告贴,鉴定完毕。
这本书是奖品不?想学学编译原理。正需要。
2008-11-23 23:18
0
雪    币: 827
活跃值: (242)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看了互动的评论决定看原版
2008-11-24 00:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
想学学编译原理。正需要
2008-11-26 21:41
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
……
书都是好书`~~~~
关键要看读书的人哦`~~~~
2008-11-26 21:44
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
呵呵,看来是需要一些干货了,我等一下就公布此书的样章。
2008-11-27 10:25
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好书,有空学习一下!
2008-12-31 20:07
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
又一本好书!
2009-3-4 00:17
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
10
我已经不敢买厚书了,买回来就当枕头用
2009-3-4 03:13
0
雪    币: 2332
活跃值: (2182)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
11
龙书是好书,但不适合初学者。

初学者建议看<<编译原理实践>>,能够将TNY扩展成 tiny c,后再看龙书就比较合适了
2009-3-4 15:49
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好书.网上已有完整版.
2011-3-22 23:20
0
游客
登录 | 注册 方可回帖
返回
//