更新时间:2024-12-18 16:45:17
封面
版权信息
内容简介
前言
第一部分 基础知识
第1章 绪论
1.1 LLVM设计思路分析
1.2 LLVM主要子项目
1.3 LLVM构建与调试
1.4 LLVM在线工具
1.5 本章小结
第2章 IR基础知识
2.1 IR分类
2.2 CFG的基本块与构建
2.3 静态单赋值
2.4 本章小结
第3章 数据流分析基础知识
3.1 半格、格与不动点
3.2 数据流分析原理及描述
3.3 数据流方程示例
3.4 扩展阅读:数据流的遍历性能分析
3.5 本章小结
第4章 支配分析
4.1 支配和逆支配
4.2 支配树和支配边界的实现
4.3 扩展阅读:支配树相关小课堂
4.4 本章小结
第5章 循环基本知识
5.1 自然循环
5.2 LLVM的循环实现
5.3 本章小结
第6章 TableGen介绍
6.1 目标描述语言
6.2 TableGen工具链
6.3 扩展阅读:如何在TD文件中定义匹配
6.4 本章小结
第二部分 代码生成
第7章 指令选择
7.1 指令选择的处理流程
7.2 SelectionDAGISel算法分析
7.3 快速指令选择算法分析
7.4 全局指令选择算法原理与实现
7.5 本章小结
第8章 指令调度
8.1 LLVM指令调度
8.2 Linearize调度器
8.3 Fast调度器
8.4 BURR List调度器
8.5 Source List调度器
8.6 Hybrid List调度器
8.7 Pre-RA-MISched调度器
8.8 Post-RA-TDList调度器
8.9 Post-RA-MISched调度器
8.10 循环调度
8.11 扩展阅读:调度算法的影响因素
8.12 本章小结
第9章 基于SSA形式的编译优化
9.1 前期尾代码重复
9.2 Phi优化
9.3 栈着色
9.4 栈槽分配
9.5 死指令消除
9.6 IPL优化之If-Conversion
9.7 循环不变量外提
9.8 公共子表达式消除
9.9 代码下沉
9.10 窥孔优化
9.11 本章小结
第10章 寄存器分配
10.1 寄存器分配流程解析
10.2 寄存器分配涉及的Pass
10.3 Fast算法实现
10.4 Basic算法实现
10.5 Greedy算法实现
10.6 PBQP算法实现
10.7 扩展阅读:图着色分配
10.8 4种算法对比
10.9 本章小结
第11章 函数栈帧生成和非SSA形式的编译优化
11.1 函数栈帧生成以及相关优化
11.2 MIR优化
11.3 MIR指令变换和调度
11.4 MIR信息收集及布局优化
11.5 扩展阅读:后缀树构造和应用
11.6 本章小结
第12章 生成机器码
12.1 MC
12.2 机器码生成过程
12.3 本章小结
第13章 添加一个新后端
13.1 适配新后端的各个阶段
13.2 添加新后端所需要的适配
13.3 本章小结
附录
附录A LLVM的中间表示
A.1 狭义LLVM IR介绍
A.2 指令选择DAG介绍
A.3 MIR介绍
A.4 MC介绍
A.5 GMIR介绍