LLVM:一种用于终身程序分析和转换的编译框架
Chris LattnerVikram Adve

摘要

本文描述了 LLVM(低级虚拟机),这是一个编译框架,旨在通过在编译时、链接时、运行时以及运行之间的空闲时间向编译器转换提供高级信息,从而支持对任意程序进行透明的、终身程序分析和转换。LLVM 在静态单赋值 (SSA) 形式中定义了一种通用、低级的代码表示形式,它具有几个新颖的特性:一种简单、与语言无关的类型系统,它公开了通常用于实现高级语言特性的基本类型;一条用于类型化地址运算的指令;以及一种可以用于统一高效地实现高级语言异常处理功能(以及setjmp/longjmp在 C 中)的简单机制。LLVM 编译器框架和代码表示形式共同提供了一系列关键能力,这些能力对于程序的实用、终身分析和转换非常重要。据我们所知,现有的编译方法都没有提供所有这些功能。我们描述了 LLVM 表示和编译器框架的设计,并通过三种方式评估该设计:(a) 表示的大小和有效性,包括它提供的类型信息;(b) 针对多个过程间问题的编译器性能;以及 (c) LLVM 为几个具有挑战性的编译器问题提供的益处的说明性示例。

请注意,本文取代了早期的技术报告

出版

"LLVM:一种用于终身程序分析和转换的编译框架",Chris Lattner 和 Vikram Adve。
2004 年国际代码生成与优化研讨会 (CGO'04) 论文集,加利福尼亚州帕洛阿尔托,2004 年 3 月。

下载

BibTeX 条目

  @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}
  }