低级虚拟机 (LLVM) 是一个库和工具的集合,它使构建编译器、优化器、即时代码生成器和许多其他与编译器相关的程序变得容易。LLVM 使用单个与语言无关的虚拟指令集,作为脱机代码表示(在编译器阶段和运行时系统之间传递代码)和编译器内部表示(分析和转换程序)。这种持久性代码表示允许在编译时、链接时、安装时、运行时或“空闲时”(程序运行之间)应用一组通用的复杂编译器技术。
LLVM 基础设施的优势在于其极其简单的设计(易于理解和使用)、源语言独立性、强大的中级优化器、自动编译器调试支持、可扩展性以及稳定性和可靠性。LLVM 目前被用于托管各种学术研究项目和商业项目。LLVM 包括 C 和 C++ 前端(基于 GCC 3.4)、类 Forth 语言的前端(Stacker)、一个年轻的 Scheme 前端,并且正在开发 Java 支持。LLVM 可以为 X86、SparcV9、PowerPC 生成代码,也可以生成 C 代码。
本教程描述了 LLVM 虚拟指令集和 LLVM 编译器系统的高级设计。为了说明 LLVM IR 中的思想,我们使用一个运行示例(通过引用到按值参数提升)来说明 LLVM 系统中几个重要的 API。接下来,我们将描述 LLVM 提供的一些关键工具,并提及几个适合 LLVM 系统的目标项目。
"LLVM 编译器框架和基础设施教程",Chris Lattner 和 Vikram Adve。
LCPC'04 编译器研究基础设施小型研讨会,印第安纳州西拉斐特,2004 年 9 月。
@InProceedings{LattnerAdve:tutorial, author={Chris Lattner and Vikram Adve}, title="{The LLVM Compiler Framework and Infrastructure Tutorial}", month={Sep}, year={2004}, address={West Lafayette, Indiana}, booktitle="{LCPC'04 Mini Workshop on Compiler Research Infrastructures}" }