LLVM

LLVM
The LLVM Compiler Infrastructure
Entwickler: Das LLVM Team und University of Illinois at Urbana-Champaign[1]
Aktuelle Version: 2.5
(2. März 2009)
Betriebssystem: Mac OS X, Linux, Red Hat Enterprise Linux[2], Mingw32
Kategorie: Compiler
Lizenz: Open Source
Deutschsprachig: nein
LLVM Homepage

Die Low Level Virtual Machine (LLVM) ist eine modulare Compiler-Backend-Architektur mit einem virtuellen Befehlssatz und einem "ganzheitlich" optimierenden Übersetzungskonzept. Kennzeichnend ist u.a., dass sämtliche Zeit-Phasen (compile-time, link-time, run-time) einschließlich der Leerlauf-Phase ("idle-time") zur Optimierung herangezogen werden können.

Inhaltsverzeichnis

Arbeitsweise

Herkömmliche Compilersysteme führen Optimierungsvorgänge nur beim Kompilieren durch und binden die kompilierten Module dann aneinander. Dieser zweite Vorgang wird Linken genannt und bietet ebenfalls Optimierungsmöglichkeiten, die jedoch bisher nicht genutzt werden, da der Linker nur die einzelnen Module sieht und nicht das gesamte Programm. Hier setzt LLVM an, indem es einen Bytecode erstellt, der auch während des Linkens noch einmal optimiert werden kann.

Aufbau

Der LLVM Compiler verwendet derzeit die GNU Compiler Collection (GCC) als Frontend. Dabei eignet sich LLVM dazu, Programme, die in frei wählbaren imperativen Programmiersprachen geschrieben wurden, zu kompilieren.

Momentan können Programme, welche in den Programmiersprachen C, C++, Objective-C, D, Ada oder Fortran entwickelt wurden, kompiliert werden. Ein alternatives Frontend namens Clang befindet sich noch in der Entwicklung.

Mit LLVM lassen sich Virtuelle Maschinen für Sprachen wie Java, plattformspezifische Codegeneratoren und von Sprache und Plattform unabhängige Optimierer erstellen. Die LLVM Zwischenschicht (IR) liegt zwischen sprachspezifischen Modulen und den jeweiligen Codegeneratoren. LLVM unterstützt weiterhin dynamische, interprozedurale Optimierung sowie statische und Just-in-time Compiler.

Aktuelle Entwicklung

Viele Komponenten befinden sich noch in Entwicklung, unter anderem Frontends für Java Bytecode, Microsofts CIL und Python. Der LLVM JIT-Compiler ist in der Lage, ungenutzte statische Zweige des Programms zur Laufzeit zu erkennen und anschließend zu entfernen. Dies optimiert Programme mit einem hohen Grad an Verzweigung. Aus diesem Grund nutzt Apple seit Mac OS X 10.5[3] LLVM im OpenGL-Stack um fehlende Hardwarefähigkeiten teilweise nachzurüsten.

Weblinks

Einzelnachweise

  1. http://llvm.org/releases/2.3/LICENSE.TXT LLVM Release License
  2. http://www.llvm.org/releases/download.html#2.3
  3. [LLVMdev] A cool use of LLVM at Apple: the OpenGL stack

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • LLVM — Low Level Virtual Machine Low Level Virtual Machine Développeur LLVM Developer Group Dernièr …   Wikipédia en Français

  • LLVM — …   Википедия

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

  • 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

  • Clang — This article is about the C, Objective C and C++ compiler. For the phenomenon of rhyming word association, see clanging. Clang Original author(s) Chris Lattner and others …   Wikipedia

  • Clang — The LLVM Compiler Infrastructure Entwickler: Das LLVM Team und University of Illinois at Urbana Champaign[1] Aktuelle Version: 2.5 (2. März 2009) Betriebssystem: Mac OS X …   Deutsch Wikipedia

  • 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… …   Wikipedia

  • Clang — Тип Компилятор Разработчик Apple Написана на …   Википедия

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

  • Haskell — Класс языка: функциональный, ленивый, модульный Тип исполнения: компилируемый, интерпретируемый Появился в: 1990 …   Википедия

Share the article and excerpts

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