Einige moderne Zwischensprachen, wie z.B. Firm, verwenden Abhängigkeitsgraphen statt Befehlslisten als Programmdarstellung.
Dadurch sind die Befehle innerhalb eines Grundblocks nicht mehr total geordnet, sondern unterliegen nur einer partiellen Ordnung.
Während der Codegenerierung muss diese partielle Ordnung in eine totale Ordnung überführt werden.
Diese Aufgabe übernimmt die Befehlsanordnung (engl. instruction scheduling).
Dabei nutzt die Befehlsanordnung Freiheitsgrade, um den Registerverbrauch gering zu halten oder die Befehlsparallelität zu erhöhen.
Im Rahmen der Masterarbeit soll die Befehlsanordnung des libFirm-Compilers verbessert werden.
Dazu sollen die in der Literatur vorhandenen Verfahren untersucht und ein geeignetes Verfahren erarbeitet werden.
Mögliche Arbeitsgebiete wären:
- Minimierung des Registerdrucks
- Ausnutzen von Instruction Level Parallelism
- Befehlsanordnung vor und nach der Registerallokation
Dieses Verfahren soll anschließend in den libFirm-Compiler integriert und evaluiert werden.
Aufgabe:
- Einarbeitung in die in der Literatur vorhandenen Befehlsanordnungsverfahren
- Erarbeitung eines geeigneten Verfahrens zur Minimierung des Registerverbrauchs
- Implementierung und Evaluierung des erarbeiteten Befehlsanordnungsverfahrens in libFirm
Voraussetzungen
- Programmierkenntnisse in C
- Interesse am Compilerbau und Codeerzeugung
Veröffentlichungen
Betreuer
Studenten