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?

  1. AKnoten sind Befehle, Kanten die Ausführungsreihenfolge der Befehle
  2. BKnoten sind Register, Kanten die Verdrahtung zwischen Registern
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Was geschieht mit dem erzeugten Code, wenn bei der Registerzuteilung ein „Spill“ auftritt?
  2. Was ist das Hauptziel der Befehlsplanung (Instruction Scheduling) des Compilers?
  3. Welche Wirkung hat es, wenn auf den letzten rekursiven Aufruf der obigen Funktion die Tail-Call-Optimierung angewendet wird?
  4. Welche Aussage zum Unterschied zwischen Compiler und Interpreter ist richtig?
  5. Welche Eigenschaft einer Laufzeitumgebung mit JIT-Kompilierung ist richtig?

Vergleiche zu diesem Thema