Implementierung eines LLVM-Backends für Jackal

BearbeiterIn:Stefan Kempf
Titel:Implementierung eines LLVM-Backends für Jackal
Typ:Studienarbeit
Betreuer:Veldema, R.; Philippsen, M.
Status:abgeschlossen am 26. Juni 2008
Vorausetzungen:

Am Lehrstuhl wurde ein Übersetzer entwickelt, der die Sprachen Java, C/C++ und Fortress für verschiedenste Architekturen (u.a. x86, PowerPC, IA64) übersetzt. Eine solche Übersetzung wird durch den statischen Ansatz limitiert. Wurde das ausführbare Programm erzeugt, so sind keine weiteren Optimierungen möglich, da der Übersetzungsvorgang bereits angeschlossen wurde.

LLVM ist ein Sammlung von Werkzeugen zur Nutzung des LLVM-Bytecodes. Ähnlich zum Java-Bytecodes unterstützt der LLVM-Bytecode arithmetisches und logische Befehle sowie Sprungbefehle. Aus Sicht eines Übersetzers liegt der Vorteil in der Benutzung von LLVM, dass die Applikation erst bei der Ausführung in Maschinencode übersetzt wird. Dieses erlaubt Optimierungen auf dem gesamten Programmcode (inkl. anderer Bibliotheken), der bei der Übersetzung des Programms auf mehrere Übersetzungseinheiten verteilt war. Im Gegensatz zum Bytecode von Java und C# ist LLVM nicht auf die Nutzung einer virtuellen Maschine limitiert.

Thema:

Anstatt im Backend des Jackal-Übersetzers Maschinencode zu erzeugen, soll LLVM-Bytecode erzeugt werden. So können zum einen die Optimierungen des LLVM-Systems ausgenutzt werden. Zum anderen können so die Optimierung weiterangewendet werden, die für Jackal von Nutzen sind. Ein Beispiel hierfür sind die Java-spezifischen Optimierungen, die innerhalb LLVM nicht zur Verfügung stehen.

Weiterhin erlaubt die Verwendung von LLVM die Ausfürhung von Jackal-Programmen auf neuen Architekturen, auf denen LLVM in Zukunft zur Verfügung steht.

Meilensteine

  • Analyse der Schnittstellen der LLVM-Werkzeuge zur Erzeung von Code
  • Analyse der LASM-Schnittstellen innerhalb Jackals
  • Vergleich der Schnittstellen hinsichtlich Vollständigkeit
  • Vergleichende Messungen der existierenden Backends und des neuen LLVM-Backends
  • Ausarbeitung

Literatur

watermark seal