前言
编译器的构建是一项复杂而有趣的任务。LLVM 项目为你的编译器提供了可重复使用的组件,LLVM 核心库实现了世界一流的优化代码生成器,可为所有流行的 CPU 架构翻译与源语言无关的机器代码中间表示法。许多编程语言的编译器已经利用了 LLVM 技术。 本书将教你如何实现自己的编译器,以及如何使用 LLVM 实现编译器。你将了解编译器的前端如何将源代码转化为抽象语法树,以及如何从中间码(IR)。此外,你还将探索如何在编译器中添加优化流水线(Pass),从而将中间表示编译为性能良好的机器代码。 LLVM 框架可以通过多种方式进行扩展,你将学习如何为 LLVM 添加新的通道,甚至是全新的后端。本书还涵盖了一些高级主题,例如针对不同的 CPU 架构进行编译,使用自己的插件和检查器扩展 clang 和 clang 静态分析器。本书采用实用的方法,并附有大量示例源代码,便于读者在自己的项目中应用所学知识。
本版新增内容
《Learn LLVM 17》新增一章,专门介绍 LLVM 中使用的 TableGen 语言的概念和语法,读者可以利用该语言定义类、记录和整个 LLVM 后端。此外,本书还重点介绍了后端开发,讨论了可以在 LLVM 后端实现的各种新的后端概念,例如实现 GlobalISel 指令框架和开发机器函数传递。
本书的读者对象
本书适用于有兴趣了解 LLVM 框架的编译器开发人员、爱好者和工程师。对于希望使用基于编译器的工具进行代码分析和改进的 C++ 软件工程师,以及希望获得更多 LLVM 基本知识的 LLVM 库临时用户,本书也非常有用。要更有效地理解本书所涉及的概念,必须具备 C++ 编程的中级经验。
示例代码下载
本书的示例代码都托管在GitHub中,你可以访问 https://github.com/PacktPublishing/Learn-LLVM-17. 获取最新代码。
我们还从丰富的书籍和视频目录中提供了其他代码库,可以访问 https://github.com/PacktPublishing/. 请查看!