图书介绍

高级编译器设计与实现2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

高级编译器设计与实现
  • (美)Steven S.Muchnick著;赵克佳,沈志宇译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111164296
  • 出版时间:2005
  • 标注页数:624页
  • 文件大小:34MB
  • 文件页数:646页
  • 主题词:编译码器-程序设计-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

高级编译器设计与实现PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

目录出版者的话专家指导委员会译者序序前言第1章 高级主题介绍1

1.1 编译器结构回顾1

1.2 基本问题中的高级论题2

1.3 代码优化的重要性4

1.4 优化编译器的结构5

1.5 激进型优化编译器中各种优化的位置7

1.6 本书各章的阅读流程10

1.7 本书没有涉及的相关主题10

1.10 小结11

1.9 数的表示与数据的大小11

1.8 例子中所用的目标机11

1.11 进一步阅读12

1.12 练习12

第2章 非形式化编译算法表示13

2.1 扩展的巴科斯-诺尔范式语法表示13

2.2 ICAN简介14

2.3 ICAN概貌16

2.4 完整的程序17

2.5 类型定义18

2.6 声明18

2.7 数据类型和表达式19

2.7.2 枚举类型20

2.7.1 一般简单类型20

2.7.3 数组21

2.7.4 集合21

2.7.5 序列22

2.7.6 元组23

2.7.7 记录23

2.7.9 函数24

2.7.10 编译专用的类型24

2.7.8 联合24

2.7.11 值nil25

2.7.12 size运算符25

2.8 语句25

2.8.1 赋值语句26

2.8.2 过程调用语句27

2.8.3 返回语句27

2.8.4 goto语句27

2.8.5 if语句27

2.8.6 case语句27

2.8.10 ICAN的关键字28

2.8.9 repeat语句28

2.8.7 while语句28

2.8.8 for语句28

2.9 小结29

2.10 进一步阅读29

2.11 练习29

第3章 符号表结构31

3.1 存储类、可见性和生命期31

3.2 符号属性和符号表项32

3.3 局部符号表管理34

3.4 全局符号表结构35

3.5 存储绑定和符号寄存器38

3.6 生成取数和存数指令的方法42

3.7 小结46

3.8 进一步阅读46

3.9 练习47

第4章 中间表示49

4.1 与中间语言设计有关的问题49

4.2 高级中间语言50

4.3 中级中间语言51

4.5 多级中间语言52

4.4 低级中间语言52

4.6 我们的中间语言:MIR、HIR和LIR53

4.6.1 中级中间表示(MIR)53

4.6.2 高级中间表示(HIR)56

4.6.3 低级中间表示(LIR)57

4.7 用ICAN表示MIR、HIR和LIR58

4.7.1 用ICAN表示MIR59

4.7.2 用ICAN表示HIR62

4.7.3 用ICAN表示LIR64

4.8 管理中间代码的若干数据结构和例程的ICAN命名67

4.9 其他中间语言形式70

4.9.1 三元式70

4.9.2 树71

4.9.3 无环有向图(DAG)72

4.9.4 前缀波兰表示73

4.10 小结74

4.11 进一步阅读74

4.12 练习74

第5章 运行时支持77

5.1 数据表示和指令77

5.2 寄存器用法80

5.3 局部栈帧81

5.4 运行时栈83

5.5 参数传递规则84

5.6 过程的入口处理、出口处理、调用和返回86

5.6.1 用寄存器传递参数:平面寄存器文件87

5.6.2 用运行时栈传递参数88

5.6.3 用具有寄存器窗口的寄存器传递参数89

5.6.4 过程值变量91

5.7 代码共享与位置无关代码91

5.8 符号和多态语言支持94

5.10 进一步阅读96

5.9 小结96

5.11 练习97

第6章 自动产生代码生成器99

6.1 简介代码生成器的自动生成100

6.2 语法制导技术100

6.2.1 代码生成器102

6.2.2 代码生成器的产生器103

6.2.3 删除链循环110

6.2.4 删除句法阻滞112

6.3 语义制导的分析介绍115

6.2.5 最后的考虑115

6.4 树模式匹配和动态规划116

6.5 小结120

6.6 进一步阅读120

6.7 练习121

第7章 控制流分析123

7.1 控制流分析的方法125

7.2 深度为主查找、前序遍历、后序遍历和宽度为主查找128

7.3 必经结点和后必经结点132

7.4 循环和强连通分量139

7.5 可归约性143

7.6 区间分析和控制树144

7.7 结构分析147

7.8 小结156

7.9 进一步阅读157

7.10 练习157

第8章 数据流分析159

8.1 一个例子:到达-定值159

8.2 基本概念:格、流函数和不动点163

8.3 数据流问题及其解决方法的分类166

8.4 迭代数据流分析168

8.5 流函数的格171

8.6 基于控制树的数据流分析172

8.7 结构分析172

8.7.1 结构分析:向前问题172

8.7.2 结构分析:向后问题178

8.7.3 结构分析方程的表示180

8.8 区间分析181

8.9 其他方法182

8.10 du链、ud链和网183

8.11 静态单赋值形式184

8.12 数组、结构和指针的处理188

8.13 数据流分析器的自动构造188

8.14 更贪婪的分析189

8.15 小结191

8.16 进一步阅读192

8.17 练习192

第9章 依赖关系分析和依赖图195

9.1 依赖关系195

9.2 基本块依赖DAG196

9.3 循环中的依赖关系200

9.4 依赖关系测试204

9.5 程序依赖图207

9.6 动态分配的对象之间的依赖关系209

9.7 小结210

9.8 进一步阅读211

9.9 练习211

第10章 别名分析213

10.1 各种现实程序设计语言中的别名215

10.1.1 Fortran 77中的别名216

10.1.2 Pascal中的别名216

10.1.3 C中的别名217

10.1.4 Fortran 90中的别名218

10.2 别名收集器218

10.3 别名传播器222

10.4 小结227

10.5 进一步阅读227

10.6 练习228

第11章 优化简介229

11.1 第12~18章讨论的全局优化230

11.2 流敏感性和可能与一定信息231

11.3 各种优化的重要性231

11.4 优化的顺序与重复232

11.5 进一步阅读235

11.6 练习235

第12章 前期优化237

12.1 常数表达式计算(常数折叠) .237

12.2 聚合量标量替代238

12.3 代数化简和重结合240

12.3.1 地址表达式的代数化简和重结合241

12.3.2 对浮点表达式应用代数化简246

12.4 值编号247

12.4.1 作用于基本块的值编号247

12.4.2 全局值编号251

12.5 复写传播256

12.6 稀有条件常数传播261

12.7 小结267

12.8 进一步阅读269

12.9 练习269

第13章 冗余删除271

13.1 公共子表达式删除271

13.1.1 局部公共子表达式删除272

13.1.2 全局公共子表达式删除276

13.2 循环不变代码外提284

13.1.3 向前替代284

13.3 部分冗余删除292

13.4 冗余删除和重结合298

13.5 代码提升299

13.6 小结302

13.7 进一步阅读302

13.8 练习304

第14章 循环优化305

14.1 归纳变量优化305

14.1.1 识别归纳变量306

14.1.2 强度削弱312

14.1.3 活跃变量分析319

14.1.4 归纳变量删除和线性函数测试替换320

14.2 不必要边界检查的消除325

14.3 小结327

14.4 进一步阅读 .329

14.5 练习329

第15章 过程优化331

15.1 尾调用优化和尾递归删除331

15.2 过程集成334

15.3 内嵌扩展337

15.4.1 叶例程优化338

15.4 叶例程优化和收缩包装338

15.4.2 收缩包装339

15.5 小结341

15.6 进一步阅读343

15.7 练习343

第16章 寄存器分配345

16.1 寄存器分配和指派345

16.2 局部方法346

16.3.1 图着色寄存器分配概述347

16.3 图着色347

16.3.2 顶层结构349

16.3.3 网,可分配对象350

16.3.4 冲突图354

16.3.5 冲突图的表示355

16.3.6 寄存器合并358

16.3.7 计算溢出代价359

16.3.8 修剪冲突图361

16.3.9 指派寄存器363

16.3.10 溢出符号寄存器365

16.3.11 图着色寄存器分配的两个例子367

16.3.12 其他问题375

16.4 基于优先级的图着色376

16.5 其他寄存器分配方法377

16.6 小结377

16.7 进一步阅读378

16.8 练习380

第17章 代码调度381

17.1 指令调度381

17.1.1 分支调度382

17.1.2 表调度385

17.1.3 自动生成指令调度器390

17.1.4 超标量实现有关的调度390

17.1.5 基本块调度中的其他问题390

17.1.6 跨基本块边界的调度392

17.2 前瞻取和上推392

17.3 前瞻调度393

17.4 软流水393

17.4.1 窗口调度395

17.4.2 展开-压实软流水397

17.4.3 循环展开400

17.4.4 变量扩张403

17.4.5 寄存器重命名404

17.4.6 软流水的其他方法407

17.4.7 层次归约407

17.5 踪迹调度408

17.6 渗透调度409

17.7 小结411

17.8 进一步阅读413

17.9 练习413

18.1 不可到达代码的删除415

第18章 控制流和低级优化415

18.2 伸直化417

18.3 if化简419

18.4 循环化简420

18.5 循环倒置421

18.6 无开关化422

18.7 分支优化422

18.8 尾融合或交叉转移423

18.9 条件传送424

18.10 死代码删除425

18.11 分支预测429

18.12 机器方言和指令归并430

18.13 小结433

18.14 进一步阅读433

18.15 练习435

第19章 过程间分析与优化437

19.1 过程间控制流分析:调用图438

19.2 过程间数据流分析445

19.2.1 流不敏感副作用分析445

19.2.2 流敏感副作用:程序概要图455

19.2.3 副作用计算中的其他问题458

19.3 过程间常数传播458

19.4 过程间别名分析461

19.4.1 流不敏感别名分析462

19.4.2 传值和传指针语言的过程间别名分析471

19.5 过程间优化473

19.6 过程间寄存器分配475

19.6.1 连接时的寄存器分配475

19.6.2 编译时的过程间寄存器分配477

19.7 全局引用的聚合477

19.8 过程间程序管理中的其他主题478

19.9 小结478

19.11 练习480

19.10 进一步阅读480

第20章 存储层次优化483

20.1 数据和指令高速缓存的影响484

20.2 指令高速缓存优化485

20.2.1 利用硬件辅助:指令预取485

20.2.2 过程排序485

20.2.3 过程和基本块的放置489

20.2.4 过程内的代码安置489

20.2.5 过程分裂492

20.2.6 过程内和过程间方法的结合492

20.3 数组元素的标量替换493

20.4 数据高速缓存优化496

20.4.1 过程间的数据安排497

20.4.2 循环转换498

20.4.3 局部性与循环铺砌502

20.4.4 利用硬件辅助:数据预取504

20.5 标量优化与面向存储器的优化505

20.6 小结506

20.7 进一步阅读508

20.8 练习508

第21章 编译器实例分析与未来的发展趋势509

21.1.1 SPARC体系结构510

21.1 Sun用于SPARC的编译器510

21.1.2 Sun SPARC编译器511

21.2 IBM POWER和PowerPC体系结构的XL编译器517

21.2.1 POWER和PowerPC体系结构517

21.2.2 XL编译器518

21.3 DEC用于Alpha的编译器524

21.3.1 Alpha体系结构524

21.3.2 Alpha的GEM编译器525

21.4.1 Intel 386体系结构530

21.4 Intel 386体系结构上的Intel参考编译器530

21.4.2 Intel编译器531

21.5 小结538

21.6 编译器设计和实现未来的趋势539

21.7 进一步阅读539

附录A 本书使用的汇编语言指南541

附录B 集合、序列、树、DAG和函数的表示549

附录C 软件资源557

参考文献561

索引579

热门推荐