Building an Optimizing Compiler中文版
latest
前言
第1章 概述
第2章 编译器的结构
第3章 图
第11章 限制资源
第12章 指令调度和再次调度
第13章 寄存器分配
Building an Optimizing Compiler中文版
Building an Optimizing Compiler(中文版)
在 GitHub 上编辑
Building an Optimizing Compiler(中文版)
Bob Morgan 著
潘立丰 陈畅 译
前言
选择编译器技术的哲学
如何使用本书
第1章 概述
1.1 什么是优化的编译器
1.2 有所侧重的优化编译器的历史
1.3 所有这些技术给我们带来什么?
1.4 编译器后端的游戏规则
1.5 标准测试和设计编译器
1.6 本书概况
1.7 本书用作教科书
1.8 参考文献
第2章 编译器的结构
2.1 编译器结构概述
2.1.1 源程序的表示
2.1.2 转换的次序
2.2 编译器前端
2.3 构建流图
2.4 支配者优化
2.5 过程间分析
2.6 相关性优化
2.7 全局优化
2.8 限制资源
2.9 指令调度
2.10 寄存器分配
2.11 再次调度
2.12 构建目标对象模块
2.13 参考文献
第3章 图
3.1 有向图
3.2 深度优先搜索
3.3 支配关系
3.4 后支配者
3.5 支配边界
3.6 控制依赖
3.7 循环和循环树
3.7.1 无限循环
3.7.2 单入口和多入口循环
3.7.3 计算循环树
3.8 实现整数集
3.9 参考文献
第11章 限制资源
11.1 限制资源的设计
11.2 窥孔优化和局部合并
11.3 计算冲突图
11.3.1 冲突矩阵的表示
11.3.2 构建冲突图
11.4 结合的寄存器重命名和寄存器合并
11.4.1 寄存器重命名
11.4.2 寄存器合并
11.4.3 集成算法
11.5 计算寄存器压力
11.6 减小寄存器压力
11.7 计算寄存器Spill点
11.7.1 减小block的压力
11.8 优化Spill指令的位置
11.8.1 优化Store操作
11.8.2 优化LOAD的位置
11.9 参考文献
第12章 指令调度和再次调度
12.1 指令调度phase的结构
12.2 Phase次序
12.3 例子
12.4 计算trace
12.5 预计算资源信息
12.5.1 定义和使用信息
12.5.2 计算指令干涉信息
12.6 指令干涉图
12.7 计算指令优先级
12.8 模拟硬件
12.8.1 预先计算机器状态机
12.8.2 向后查看已调度指令序列
12.8.3 在调度时替换指令
12.9 调度算法
12.9.1 改进
12.9.2 Block_Start和Block_End
12.10 软件流水线
12.10.1 估计初始间隔和限制条件
12.10.2 调度单次迭代
12.10.3 展开循环和重命名临时变量
12.10.4 生成序曲
12.10.5 生成尾声
12.10.6 乱序执行
12.12 参考文献
第13章 寄存器分配
13.1 全局寄存器分配
13.1.1 何时启发式方法行不通
13.1.2 总体算法
13.1.3 建立待着色临时变量的栈
13.1.4 为栈中的临时变量赋予寄存器
13.1.5 选择实际的物理寄存器
13.1.6 实现挤出(Spilling)
13.2 局部寄存器分配
13.3 参考文献
Indices and tables
索引
模块索引
搜索页面
Read the Docs
v: latest
版本
latest
下载
pdf
epub
托管于 Read the Docs
项目主页
构建