
资源介绍
(第二版)(英文版电子书)
核心内容
LLVM 基础与环境搭建
详细讲解 LLVM 的安装与编译过程,涵盖 Ubuntu、Fedora、FreeBSD、macOS 和 Windows 等多个操作系统。
介绍 CMake 和 Ninja 等构建工具的配置方法,以及如何通过自定义变量优化 LLVM 的构建流程。
编译器结构与前端实现
解析编译器的三大核心组件:前端(词法分析、语法分析、语义分析)、中端(中间代码优化)和后端(机器码生成)。
以算术表达式语言和简化的 Modula-2 子集 “tinylang” 为例,演示如何手动实现词法分析器(Lexer)、语法分析器(Parser)和抽象语法树(AST),并进行语义检查。
中间代码生成与优化
讲解 LLVM 中间表示(IR)的结构与特性,包括基本块、指令选择和静态单赋值(SSA)形式。
介绍如何从 AST 生成 LLVM IR,处理控制流(如条件语句、循环)、聚合数据类型(数组、结构体)和面向对象特性(类、虚函数)。
深入探讨 LLVM 的优化管道,包括如何自定义优化 passes、实现函数内联和死代码消除等优化策略。
高级主题与实战应用
TableGen 语言:介绍 LLVM 专用的领域特定语言,用于简化后端代码生成,定义寄存器、指令格式和目标描述。
JIT 编译:讲解如何利用 LLVM 的即时编译功能(ORC 框架)实现动态代码生成与执行,构建交互式计算器等应用。
调试与测试工具:涵盖地址 sanitizer、内存 sanitizer 和线程 sanitizer 等工具的使用,以及如何通过 libFuzzer 进行模糊测试和 XRay 进行性能分析。
后端开发:指导读者为新 CPU 架构添加后端支持,包括目标描述、指令选择和机器码生成。
适用人群
编译器开发人员、爱好者和工程师。
希望利用编译器工具进行代码分析与优化的 C++ 软件工程师。
对 LLVM 核心库感兴趣的初学者,需具备中级 C++ 编程经验。
特色亮点
实践性强:包含大量示例代码和项目案例,如表达式计算器、自定义语言编译器等,便于读者动手实践。
内容更新:第二版新增 TableGen 语言详解、GlobalISel 指令框架和机器函数 pass 开发等内容,聚焦 LLVM 17 的新特性。
结构清晰:按 “基础 - 进阶 - 实战” 的逻辑组织,从环境搭建到后端开发逐步深入,适合系统学习。
通过本书,读者不仅能掌握 LLVM 的核心原理与工具链使用,还能独立开发支持高级语言特性的编译器,并针对特定硬件架构优化代码生成,为编译器开发和代码优化领域打下坚实基础。