HOME | ENGLISH | IMPRESSUM | KIT

Masterarbeit (laufend): Effiziente Befehlsauswahl mit vielen Mustern

Die Befehlsauswahl ist die Phase eines Compilers, die seine maschinenunabhängige Zwischensprache in die Maschinensprache der Zielarchitektur übersetzt. In einem graphbasierten Compilerframework wie libFirm entspricht dabei jeder Zielbefehl einigen kleinen Mustern von Knoten. Taucht eines dieser Muster im Programm auf, kann dafür der Zielbefehl eingesetzt werden.

Der Befehlsauswahlalgorithmus muss nun die kleinste Mustermenge finden, die das gesamte Programm abdeckt. Dieses Problem ist als NP-vollständig bekannt, und es gibt gute Heuristiken dafür. In der Praxis wird oft auch ein greedy Ansatz verwendet, der gute Ergebnisse liefert.

In dieser Arbeit soll ein weiteres Teilproblem der Befehlsauswahl betrachtet werden: Das Graph-Pattern-Matching, das heißt das Finden aller möglichen Vorkommen der Muster im Programm zu bestimmen. Mit wachsender Mustermenge wird es zunehmend ineffizient, an einem Punkt des Programms alle Muster durchzuprobieren. In dieser Arbeit soll ein Algorithmus entworfen und implementiert werden, der stattdessen die Struktur der vorher bekannten Mustermenge nutzt, um ein effizientes Matching zu ermöglichen.

Aufgabe:

  • Erarbeiten eines effizienten Matching-Algorithmus
  • Integration in libFirm

Voraussetzungen

  • Gute Kenntnisse in Datenstrukturen und Graphenalgorithmen
  • Erste Erfahrungen im Compilerbau vorteilhaft

Schlüsselworte

Compiler, Befehlsauswahl, Graphen 

Betreuer

Wissenschaftliche Mitarbeiter
Sebastian Buchwald
Andreas Fried

Studenten

Studenten
Markus Schlegel