Compiler
Welche Kombination dessen, was Knoten und Kanten darstellen, ist richtig, wenn bei der Registerzuteilung des Compilers das Verfahren der Färbung des Interferenzgraphen verwendet wird?
- AKnoten sind Befehle, Kanten die Ausführungsreihenfolge der Befehle
- BKnoten sind Register, Kanten die Verdrahtung zwischen Registern
- CKnoten sind Werte, Kanten die Beziehung gleichzeitiger Lebendigkeit
Antwort und Erläuterung anzeigen
Antwort: C. Knoten sind Werte, Kanten die Beziehung gleichzeitiger Lebendigkeit
Im Interferenzgraphen sind Variablen und Zwischenwerte die Knoten, und zwei Werte, die zu einem Zeitpunkt beide noch verwendet werden (lebendig sind), werden durch eine Kante verbunden. Durch eine Kante verbundene Werte werden gleichzeitig benötigt und können nicht im selben Register liegen. Bei k Registern wird mit k Farben gefärbt, sodass benachbarte Knoten nie dieselbe Farbe haben; gelingt das, werden die Farben direkt den Registern zugeordnet. Gelingt es nicht, werden einzelne Werte in den Speicher ausgelagert (Spill). Der Graph stellt weder die Befehlsreihenfolge noch die Registerverdrahtung dar.