Modernisierung und Erweiterung eines im Lehrbetrieb eingesetzten Just-in-Time-Übersetzers

BearbeiterIn:Simon Rainer
Titel:Modernisierung und Erweiterung eines im Lehrbetrieb eingesetzten Just-in-Time-Übersetzers
Typ:
Betreuer:Kreutzer, P.; Kamp, M.; Philippsen, M.
Status:abgeschlossen am 12. Februar 2018
Vorausetzungen:
Thema:

Der Lehrstuhl für Informatik 2 bietet mit der Vorlesung "Ausgewählte Kapitel aus dem Übersetzerbau" eine Veranstaltung an, in der den Studierenden fortgeschrittene und größtenteils orthogonale Konzepte aus dem Bereich des Übersetzerbaus vermittelt werden. Einer der Themenbereiche beschäftigt sich mit Virtuellen Maschinen (VM) und der Just-In-Time-Übersetzung (JIT) von Programmen. Zu diesem Thema absolvieren die Studierenden ein einwöchiges Blockpraktikum, in dem sie -- aufbauend auf einer rudimentären Vorlage -- eine kleine Virtuelle Maschine samt JIT-Übersetzer für die x86-Architektur schreiben.
Die aktuelle Vorlage verwendet eine mittlerweile als veraltet zu bezeichnende Bibliothek für die Code-Generierung und unterstützt nur das 32-Bit-Subsystem von x86. Des Weiteren haben die vorigen Semester gezeigt, dass den Studierenden (wie auch den Betreuern) einfache Möglichkeiten zum Testen der VM-Implementierungen sowie zur Durchführung von Zeitmessungen fehlen.
Im Rahmen dieses Masterprojekts soll deshalb eine neue Implementierung der VM und ihres JIT-Übersetzers geschrieben und eine einfache Testumgebung aufgesetzt werden.
Dazu sollen zunächst mögliche Bibliotheken zur Code-Erzeugung gefunden und hinsichtlich ihrer Eignung im Rahmen des Blockpraktikums bewertet werden. Eine geeignet erscheinende Bibliothek soll dann verwendet werden, um die aus dem Praktikum bekannte VM mit ihrem gesamten Funktionsumfang neu zu implementieren. Zur Übersetzung des Programms soll ein einfaches Build-System (Makefile, cmake) aufgesetzt werden, das die Abhängigkeiten zwischen den Quelldateien berücksichtigt.
Da es angedacht ist, die neue Implementierung in den kommenden Semestern im Rahmen des Blockpraktikums zu verwenden, ist die Implementierung ausführlich zu kommentieren und eine README-Datei mit Hinweisen zur Verwendung zu verfassen. Des Weiteren soll aus der vollständigen Implementierung eine Vorlage erzeugt werden, in der die durch die Studierenden zu implementierenden Teile durch Platzhalter und ggf. Hinweise zur Implementierung ersetzt werden.
Abschließend soll -- in Absprache mit den Betreuern des Masterprojekts -- ein einfaches Testsystem aufgesetzt werden, mit dem die Studierenden ihre Implementierungen testen können, um Fehler und Laufzeitprobleme zu identifizieren. Dabei sollen die aus den anderen Übersetzerbau-Veranstaltungen zur Verfügung gestellten Testprogramme zum Einsatz kommen und eine Möglichkeit geschaffen werden, alle diese Programme automatisch auszuführen und das Ergebnis auf Korrektheit und Laufzeit hin zu untersuchen.
Zum Masterprojekt gehören eine kurze Ausarbeitung (wenige Seiten) sowie ein Vortrag im Rahmen des Kolloquiums. Dabei sollen insbesondere auch die bei der Bearbeitung des Projekts aufgetretenen Schwierigkeiten und Fallstricke dokumentiert und Implementierungsentscheidungen diskutiert und begründet werden.

watermark seal