Compilerbau und virtuelle Maschinen

Themen für studentische Arbeiten aus dem Gebiet Compilerbau

Prof. Dr.-Ing. Dieter Pawelczak

Professur für Softwaresysteme


Compilerbau und virtuelle Maschinen

Allgemeine Themen:

Auf dem Gebiet des Compilerbaus bietet sich eine Vielzahl von Themen für Projekt- Bachelor- oder Masterarbeit an. Angefangen von der Analyse der eingesetzten Datenstrukturen in Compilern sowie deren Optimierungspotential bis hin zur Entwicklung von Optimieralgorithmen, Algorithmen zur Code-Erzeugung oder Transformation, Registerzuweisungen, Implementierungen von Mini-Frontends oder Werkzeugen zur Analyse von Programmen (vom Quellcode bis zum Binärcode). Virtuelle Maschinen bieten Plattform-Unabhängigkeit und ermöglichen eine erheblich stärkere Analyse der laufenden Prozesse als dies auf einem physikalischen Prozessor möglich ist. Moderne Compiler-Werkzeuge greifen bei der Übersetzung oder während des Debuggens bereits auf solche Möglichkeiten zu und erlauben Fehler in Programmen frühzeitig zu finden.

 

Konkrete Themen:

Entwicklung einer Schnittstelle zur Ausführung von nativem Code aus einer virtuellen Maschine

Die aus dem MOP-Praktikum bekannte Bibliothek VScreen.lib soll in die MOP-Praktikumssoftware eingebunden werden.Dafür soll eine generische Schnittstelle definiert werden, welche das Einbinden von DLLs aus der virtuellen Maschine ermöglicht. Das Thema könnte als Ba-Arbeit weitergeführt werden, wenn es darüber hinaus eine plattform unabhängige Integration von Bibliotheken in die VM betrachtet, z.B. zusätzlich für Linux und Mac OS X

Pr. ab sofort
bis Ende WT12

Entwicklung eines Mini-Compilers als Einführungsbeispiel für die Lehrveranstaltung Programmerzeugungssysteme

In Anlehnung an den Beispiel-Compiler SimpleC, soll der Compiler MiniB entwickelt werden, um als Einführung alle grundlegenden Phasen eines Compilers zu beleuchten. Als Zielmaschine ist die FPU (x86-IA32) gedacht, mit welcher man sehr leicht ein Programm in Postfix-Notation ausführen kann.

BA/ Pr./St. ab sofort
bis Ende HT11
Thema / Beschreibung Art Termin

Entwicklung einer graphischen Benutzeroberfläche zur Darstellung der internen Zustände eines C-Compilers

Entwicklung einer graphischen Benutzeroberfläche im Sinne einer einfachen IDE für den Kommandozeilen-C-Compiler SimpleC. Neben einem Editor sollen mehrere Fenster für die internen Zustände des Compilers nebeneinander dargestellt werden können. Diese Fenster umfassen z.B. den Scanner-Output, Präprozessor-Output, Zwischencode-Speicher für den Optimierer, Zwischencode (Frontend-Output), die Assembler-Ausgabe und die Symboltabelle.
BA/MA ab sofort

Entwicklung eines Syntaxbaum-basierten Optimierermoduls mit graphischen Darstellung der Arbeitsschritte

Ausgehend von der 3-Adresscode-Darstellung soll die Umformung in einen Syntaxbaum mit graphischer Darstellung realisiert werden. Anhand des Syntaxbaums können einfache Optimierungsmaßnahmen wie Konstantenfaltung, elimination redundanten Codes durchgeführt und diese Arbeitsschritte visualisiert werden.

BA/MA ab sofort

Entwicklung eines Laders zur Ausführung von C-Programmen in einer virtuellen Maschine

Der SimpleC-Compiler übersetzt C-Code für die "MOPVM" (MOP-Virtuelle Maschine). Auf Basis dieses Objektcodes soll ein minimalistischer Lader entwickelt werden, der den Objektcode in einer virtuellen Maschine plattform-unabhängig zur Ausführung bringt.

BA/MA ab sofort

Entwicklung eines web-basierten EBNF-Simulators zur Prüfung von EBNF-Grammatiken

Als Übungsplattform für die Lehrveranstaltung Programmerzeugungssysteme soll ein EBNF-Simulator entwickelt werden, welcher die Eingabe einer EBNF-Grammatik erlaubt, diese auf typische Spracheigenschaften untersucht (linksrekursiv, prädiktiv, etc.) und Eingaben gegen die Grammatik prüfen kann. Um eine einfache Veröffentlichung der Software auf den Webseiten der Lehrveranstaltung zu ermöglichen, ist als Programmiersprache JavaScript oder Java geeignet. Eine entsprechende ANTLR-Grammatik für EBNF steht zur Verfügung.

BA/MA ab sofort

Entwicklung eines x86-Simulators zum Debuggen von C-Anwendungen.

Aus Basis des Syntax-Baums für x86-Code (vom x86-Backend des SimpleC-Compiler generiert) soll ein Simulator entwickelt werden, der die x86-Anweisungen in einer virtuellen Maschine ausführt. Als Benutzeroberfläche kann der Simulator in die IDE der MOP-Praktikumssoftware integriert werden und so als zusätzlicher Debugger dienen. Interessant gestaltet sich hier die Visualisierung der Register-Inhalte sowie des Stacks.

BA ab sofort

Entwicklung von virtuellen Hardware-Modulen zur Einbindung in eine integrierte Entwicklungsumgebung (IDE)

Für die IDE der MOP-Praktikumssoftware sollen in Form von Plug-Ins zusätzliche virtuelle Hardware-Komponenten entwickelt werden, welche im Memory-Mapped-Betrieb angesteuert werden können. Im Debugger können Ausgaben und/oder Zustände der Hardware angezeigt werden.

BA ab sofort

Generierung und Darstellung von Zustandsdiagrammen

Die Vokabeln einer Programmiersprache (Schlüsselwörter, Operatoren, Bezeichner, Satzzeichen etc.) lassen sich mit regulären Ausdrücken oder Zustandsdiagrammen beschreiben. Ausgehend von der Beschreibung einfacher regulärer Ausdrücke sollen automatisch entsprechende Zustandsdiagramme gezeichnet werden. Einen Schwerpunkt stellt dabei der Algorithmus für die sauberer graphische Ausgabe des Zustandsautomaten dar (weiter...).

BA/MA ab sofort

 

Abgeschlossene Arbeiten/Frühere Themen:

  • Einfacher C-Interpreter (Compiler/Interpreter)
  • Entwicklung eines C-Editors (Softwareentwicklung)
  • Entwicklung eines EBNF-Simulators mit grafischer Benutzeroberfläche (BA), M. Klebs, 2010
  • Visualisierung von Algorithmen mit automatisch generierten Aktivitätsdiagrammen (UML2) (BA), A. Brauss, 2010

Weitere Themen sind auch auf den Seiten zur Lehrsoftware zu finden.

SimpleC-Compiler

im interaktiven Modus