Low Level Virtual Machine

Low Level Virtual Machine

infobox software
name = LLVM
developer = LLVM Developer Group & Apple, Inc
latest_release_version = 2.3
latest_release_date = 9 June 2008
released = 2000
operating_system = Cross-platform
genre = Compiler
license = University of Illinois/NCSA Open Source License
website = http://llvm.org/

The Low Level Virtual Machine, generally known as LLVM, is a compiler infrastructure, written in C++, which is designed for compile-time, link-time, run-time, and "idle-time" optimization of programs written in arbitrary imperative programming languages. The LLVM project started in 2000 at the University of Illinois at Urbana-Champaign.

LLVM currently supports the compilation of C, C++, Objective C, Ada, and Fortran programs, using front-ends derived from version 4.0.1 and 4.2 of the GNU Compiler Collection (GCC). An alternate front-end for C-like languages is being developed under the name clang.

Using LLVM, one can create virtual machines for languages like Java, code generators for specific machine architectures, and optimizers independent from particular platforms or languages. The LLVM intermediate representation (IR) is language and architecture independent; it lies between a language-specific module and a code generator for a specific machine. LLVM includes aggressive inter-procedural optimization support, static and JIT compilers.

It has many components in various stages of development; including, but not limited to, a Java bytecode frontend, a CIL frontend, a Python frontend, a new graph coloring register allocator. The LLVM JIT compiler is capable of optimizing unnecessary static branches out of a program at runtime, and is therefore useful for partial evaluation in cases where a program has many options—most of which can easily be determined unnecessary in a specific environment. Because of this, it is used in the OpenGL pipeline of Mac OS X 10.5 (Leopard) to provide support for missing hardware features.

Code representation

LLVM supports a language-independent instruction set and type system. Most of the instructions have a form similar to three address code. Each instruction is in Static single assignment form (SSA), meaning that each variable (called a typed register) is assigned once and is frozen. This helps simplify the analysis of dependencies among variables.

Any form of type conversion, from coercion to the downcasting of an object, is performed explicitly using the cast instruction. LLVM has basic types, like integers of fixed sizes, and exactly five derived types: pointers, arrays, vectors, structures, and functions. A type construct in a concrete language can be represented by combining these basic types in LLVM. For example, a class in C++ can be represented by a combination of structures, functions and arrays of function pointers.

Licensing

LLVM and clang are publicly available under the University of Illinois/NCSA Open Source License [http://www.opensource.org/licenses/UoI-NCSA.php] , a GPL-compatible, [ [http://www.gnu.org/philosophy/license-list.html Various Licenses and Comments about Them - GNU Project - Free Software Foundation (FSF) ] ] OSI-approved license that is very similar to the BSD license.

References

ee also

*GNU Compiler Collection
*libjit
*Clang C Compiler

External links

* [http://llvm.org/ The LLVM Compiler Infrastructure Project]
* [http://llvm.org/pubs/2004-01-30-CGO-LLVM.pdf LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation] — a published paper by Chris Lattner and Vikram Adve.
* [http://llvm.org/docs/LangRef.html LLVM Language Reference Manual] — describes the LLVM intermediate representation.
* [http://video.google.com/videoplay?docid=6189170937161128523 LLVM 2.0 Presentation] — Google Tech Talk Presentation on LLVM 2.0


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Low Level Virtual Machine — Développeur LLVM Developer Group, Université de l Illinois Dernière version …   Wikipédia en Français

  • Low Level Virtual Machine — The LLVM Compiler Infrastructure Maintainer Chris Lattner[1] Entwickler The LLVM Team[2] Aktuelle Version 2.9 (6. April 2011) …   Deutsch Wikipedia

  • Low Level Virtual Machine — LLVM Тип Компилятор Разработчик LLVM Developer Group Н …   Википедия

  • Virtual Machine — Machine virtuelle Pour les articles homonymes, voir VM. VirtualBox Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) e …   Wikipédia en Français

  • Virtual machine — A virtual machine (VM) is a completely isolated guest operating system installation within a normal host operating system .[1] Modern virtual machines are implemented with either software emulation or hardware virtualization or (in the most… …   Wikipedia

  • Java Virtual Machine — A Java Virtual Machine (JVM) is a set of computer software programs and data structures which use a virtual machine model for the execution of other computer programs and scripts. The model used by a JVM accepts a form of computer intermediate… …   Wikipedia

  • Machine Virtuelle — Pour les articles homonymes, voir VM. VirtualBox Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) e …   Wikipédia en Français

  • Machine virtuelle (informatique) — Machine virtuelle Pour les articles homonymes, voir VM. VirtualBox Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) e …   Wikipédia en Français

  • Machine virtuelle — Pour les articles homonymes, voir VM. machine virtuelle des assistants personnels Palm En informatique, une machine virtuelle (anglais virtual machine, abr. VM …   Wikipédia en Français

  • Parrot virtual machine — Developer(s) Parrot Foundation Stable release 3.10.0[1] / November 16, 2011; 7 days ago …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”