LLVM Code Generation: A deep dive into compiler backend development

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 后端开发的得力工具。


🗂️ 图书目录速览

  1. 构建 LLVM 并了解其目录结构
  2. 如何贡献 LLVM 开源项目
  3. 编译器基础与 LLVM API 的映射
  4. 编写你的第一个 LLVM 优化
  5. Pass 管理器的原理与使用
  6. TableGen:LLVM 的建模利器
  7. 深入理解 LLVM IR
  8. LLVM 已有优化 Pass 概览
  9. 构建面向特定目标的后端
  10. LLVM Pass 调试实战
  11. 传统指令选择架构:SelectionDAG
  12. 初识机器码生成(Machine Code Layer)
  13. Machine Pass 管线详解
  14. 指令选择流程概览
  15. IR 构建阶段
  16. 合法化阶段(Legalization)
  17. 匹配与替换阶段(Selection & Beyond)
  18. 指令调度详解
  19. 寄存器分配机制
  20. 栈布局的优化与 Lowering
  21. 汇编器与目标文件的生成流程

无论你是探索 LLVM 的新手,还是在使用 LLVM 构建实际产品的开发者,这本书都将成为你通向“编译器后端开发高手”的桥梁。

通过大量实例与深入剖析,你不仅能学会如何使用 LLVM,更能理解“为什么这样设计”,掌握开发、调试和优化背后的核心逻辑。


下载地址

admin