HOME | ENGLISH | IMPRESSUM | KIT

Masterarbeit (abgeschlossen): Registerallokation für komprimierten Maschinencode

In klassischen RISC-Maschinensprachen haben alle Instruktionen die selbe Länge. Dies bedeutet aber, dass gegenüber CISC-Sprachen das gleiche Programm größer wird. Man sagt, die RISC-Sprachen haben eine geringere „Codedichte“.

In den Maschinensprachen von ARM und RISC-V wird dieses Problem dadurch gelöst, dass es für die wichtigsten Instruktionen Codierungen in halber Länge gibt, nämlich die Thumb-Instruktionen bzw. die Erweiterung RISC-V-C.

In den kleinen Codierungen können die meisten Instruktionen nur auf eine Teilmenge der Register zugreifen (z. B. 8 von 16 bei ARM, 8 von 32 bei RISC-V). Liegen die Operanden oder das Ergebnis der Instruktion in anderen Registern, muss stattdessen die große Codierung gewählt werden.

Der Compiler sollte also bei den entsprechenden Instruktionen die Register-Teilmenge bevorzugen, die die kleine Codierung erlaubt. Dies ist ein im Compilerbau bisher noch nicht systematisch betrachtetes Problem. Man kann im Registerallokator zwar abbilden, dass ein Wert in einem bestimmten Register liegen muss, aber nicht dass er nach Möglichkeit in einem bestimmten Register liegen soll.

Aufgabe dieser Masterarbeit ist daher die Definition eines Frameworks, in dem diese Bevorzugung von Registern abgebildet werden kann, sowie die Weiterentwicklung des libFirm-Registerallokators, damit er möglichst häufig kleine Codierungen erzeugen kann. Schließlich soll die Erweiterung anhand des ARM- oder RISC-V-Backends von libFirm evaluiert werden.

Aufgabe:

  • Definition eines Frameworks, um Register-Bevorzugungen zu spezifizieren
  • Entwicklung eines passenden Registerallokators
  • Implementation eines Codegenerators für ARM Thumb oder RISC-V-C.

Voraussetzungen

  • Programmiererfahrung in C
  • Grundkenntnisse in hardwarenaher Programmierung (Assembler, ABIs)
  • Interesse an Compilerbau
  • Erfahrung in libFirm vorteilhaft

Schlüsselworte

Compiler, Registerallokation 

Veröffentlichungen

Veröffentlichung
SSA-based Register Allocation for Compressed Machine Code

Betreuer

Ehemalige Mitarbeiter
M.Sc. Andreas Fried

Studenten

Studenten
Maximilian Stemmer-Grabow