
LLVM 已成为现代编译器架构的代名词,被广泛应用于从编程语言实现、硬件优化,到安全分析和代码混淆等多个领域。如果你想深入了解 LLVM 的后端架构,掌握如何将中间表示(IR)转化为高效的汇编代码,那么这本由 LLVM 资深贡献者 Quentin Colombet 撰写的权威指南,不容错过。
Colombet 是 GlobalISel 框架的核心架构师,拥有多年一线编译器开发经验。本书基于他的实践经验,系统梳理了构建 LLVM 后端所需的核心知识,涵盖机器码生成、寄存器分配、指令选择、调度、ABI 等关键主题,并通过一个完整的“玩具后端”项目贯穿全书,帮助你边学边练,真正掌握 LLVM 后端开发的底层原理与高级技巧。
✅ 本书亮点
- 从零搭建 LLVM 后端:循序渐进地构建一个优化代码生成器,直观了解所有核心流程。
- 强调实战与 API 操作:通过精心设计的代码片段,展示 LLVM 后端的实际 API 使用方法。
- 掌握现代指令选择架构:深度讲解 GlobalISel 的多个阶段,包括 Legalization、Selection、Scheduling 等。
- 专注后端开发难点:涵盖 TableGen DSL、寄存器分配、栈布局等 LLVM 中最少文档覆盖的模块。
- 稳定知识结构:涵盖的 LLVM 核心概念具有版本稳定性,可作为长期参考手册。
📚 你将学到什么?
- 理解编译器核心概念(SSA、支配树、ABI 等)及其在 LLVM 中的实现。
- 构建和扩展自定义 LLVM 后端,用于实现面向特定硬件或虚拟机的编译器支持。
- 使用 LLVM 的中间表示(IR)进行代码优化和转换。
- 掌握 LLVM 的调试技巧,优化 IR 和机器码的生成流程。
- 熟悉 Machine IR、MC 层的处理流程,打通从 IR 到最终汇编/目标文件的完整路径。
- 精通 TableGen DSL,构建抽象描述语言实现复杂模型。
- 理解指令选择的构建与执行流程,包括指令合法化、匹配、调度与寄存器分配。
👥 适合人群
无论你是:
- 编译器开发初学者,希望了解如何将前端 IR 编译为机器代码;
- 有经验的 LLVM 开发者,渴望深入挖掘 TableGen、GlobalISel、MC 等高级模块;
- 硬件架构师/嵌入式工程师,需要为新硬件平台定制代码生成逻辑;
- 研究人员或教育工作者,需要权威参考材料辅助教学或项目开发;
这本书都将成为你掌握 LLVM 后端开发的得力工具。
🗂️ 图书目录速览
- 构建 LLVM 并了解其目录结构
- 如何贡献 LLVM 开源项目
- 编译器基础与 LLVM API 的映射
- 编写你的第一个 LLVM 优化
- Pass 管理器的原理与使用
- TableGen:LLVM 的建模利器
- 深入理解 LLVM IR
- LLVM 已有优化 Pass 概览
- 构建面向特定目标的后端
- LLVM Pass 调试实战
- 传统指令选择架构:SelectionDAG
- 初识机器码生成(Machine Code Layer)
- Machine Pass 管线详解
- 指令选择流程概览
- IR 构建阶段
- 合法化阶段(Legalization)
- 匹配与替换阶段(Selection & Beyond)
- 指令调度详解
- 寄存器分配机制
- 栈布局的优化与 Lowering
- 汇编器与目标文件的生成流程
无论你是探索 LLVM 的新手,还是在使用 LLVM 构建实际产品的开发者,这本书都将成为你通向“编译器后端开发高手”的桥梁。
通过大量实例与深入剖析,你不仅能学会如何使用 LLVM,更能理解“为什么这样设计”,掌握开发、调试和优化背后的核心逻辑。
下载地址