- 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
- LLVM-Homepage
- "The LLVM Compiler System" (Chris Lattner, März 2007) (PDF, 416 KB)
- "LLVM and Clang: Next Generation Compiler Technology" (Chris Lattner, Mai 2008) (PDF, 5.8 MB)
- "Chaosradio Express Podcast: LLVM - Die 'Low Level Virtual Machine' Compiler-Infrastruktur"
Einzelnachweise
Wikimedia Foundation.