Abbildung der LLVM-Zwischensprache (Bitcode) auf die Zwischensprache des LS2-Programmanalyse-Frameworks.

BearbeiterIn:Andreas Grünwald
Titel:Abbildung der LLVM-Zwischensprache (Bitcode) auf die Zwischensprache des LS2-Programmanalyse-Frameworks.
Typ:bachelor thesis
Betreuer:Blaß, T.; Veldema, R.; Philippsen, M.
Status:abgeschlossen am 8. September 2014
Vorausetzungen:
Thema:

Voraussetzungen
Am Lehrstuhl für Programmiersysteme (LS2) wird ein Framework zur allgemeinen, sprachunabhängigen Programmanalyse entwickelt. Ein Merkmal des LS2-Frameworks ist, dass es Analysen bereithält, die erkennen, ob ein paralleles Programm gleichzeitig auf gemeinsame Daten zugreift. Das LS2-Framework ist bereits erfolgreich eingesetzt worden, um in Programmen, die in einem vereinfachten Java-Dialekt bzw. einem eingeschränkten C-Dialekt (MISRA-C) Wettlaufbedingungen durch Analysen zu finden.
Das LLVM Projekt stellt eine Übersetzer Infrastruktur dar, die eine Vielzahl von Eingabesprachen und Optimierung unterstützt. Alle Programme (unabhängig von der Eingabesprache - z.B. C, C++, Python, ...) werden auf eine interne Zwischensprache (Bitcode) abgebildet. Durch die Anbindung dieser Zwischensprache können eine Vielzahl von Programmen durch das LS2-Framework analysiert werden.

Thema
Durch die Verwendung von Bitcode erhält man eine Basis, um eine Vielzahl von Programmen analysieren zu können. Es muss nur noch ein Zerteiler (Parser) für das Verarbeiten des Bitcodes gepflegt werden statt für jede unterstützte Programmiersprache. Dies reduziert die Komplexität und den Zeitaufwand erheblich. Das LS2-Framework enthält eine eigene Zwischensprache. In dieser BA soll der LLVM-Bitcode auf die Zwischensprache des LS2-Frameworks abgebildet werden. Wie bereits erwähnt, handelt es sich bei der Eingabesprache des LS2-Frameworks um einen vereinfachten Java-Dialekt. Der LLVM-Bitcode ist hier wesentlich umfangreicher. Sprachmittel wie z.B. (Funktions-) Zeiger, void-Zeiger, Zeiger-Arithmetik oder Vererbung sind in dem vereinfachten Java-Dialekt nicht vorgesehen. Gleiches gilt für bestimmte Datenstrukturen z.B. unions. Für diese und weitere Sprachmittel müssen geeignete Abbildungen erarbeitet werden.
Ziel der Arbeit ist es, den aus der STAMP-Benchmark-Suite generierten LLVM-Bitcode einzulesen, zu transformieren und auszuführen.

Meilensteine

  • Einarbeiten in die LLVM-Zwischensprache (Bitcode).
  • Einarbeiten in das LS2-Programm-Analyse-Framework.
  • Einlesen der LLVM-Zwischensprache.
  • Abbilden des Bitcodes auf die Zwischensprache des LS2-Programm-Analyse-Framework.
  • Evaluation mittels der STAMP-Benchmark-Suite.
  • Zusammenschreiben.

Literatur

watermark seal