本文描述了 LLVM(低级虚拟机),这是一个编译框架,旨在通过在编译时、链接时、运行时以及运行之间的空闲时间向编译器转换提供高级信息,从而支持对任意程序进行透明的、终身程序分析和转换。LLVM 在静态单赋值 (SSA) 形式中定义了一种通用、低级的代码表示形式,它具有几个新颖的特性:一种简单、与语言无关的类型系统,它公开了通常用于实现高级语言特性的基本类型;一条用于类型化地址运算的指令;以及一种可以用于统一高效地实现高级语言异常处理功能(以及setjmp/longjmp在 C 中)的简单机制。LLVM 编译器框架和代码表示形式共同提供了一系列关键能力,这些能力对于程序的实用、终身分析和转换非常重要。据我们所知,现有的编译方法都没有提供所有这些功能。我们描述了 LLVM 表示和编译器框架的设计,并通过三种方式评估该设计:(a) 表示的大小和有效性,包括它提供的类型信息;(b) 针对多个过程间问题的编译器性能;以及 (c) LLVM 为几个具有挑战性的编译器问题提供的益处的说明性示例。
请注意,本文取代了早期的技术报告。
"LLVM:一种用于终身程序分析和转换的编译框架",Chris Lattner 和 Vikram Adve。
2004 年国际代码生成与优化研讨会 (CGO'04) 论文集,加利福尼亚州帕洛阿尔托,2004 年 3 月。
@InProceedings{LLVM:CGO04, author = {Chris Lattner and Vikram Adve}, title = "{LLVM: A Compilation Framework for Lifelong Program Analysis \& Transformation}", booktitle = "{Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO'04)}", address = {Palo Alto, California}, month = {Mar}, year = {2004} }