Compiler

Was wird bei der Lebendigkeitsanalyse (Liveness Analysis), die als Vorbereitung der Registerzuteilung durchgeführt wird, ermittelt?

  1. ADie Zeilennummer, in der jede Variable im gesamten Programm deklariert wurde
  2. BMaximal- und Minimalwert der Variablenwerte
  3. COb ein Wert zu jedem Zeitpunkt später noch verwendet werden kann
Antwort und Erläuterung anzeigen

Antwort: C. Ob ein Wert zu jedem Zeitpunkt später noch verwendet werden kann

Bei der Lebendigkeitsanalyse wird anhand des Kontrollflussgraphen für jeden Zeitpunkt des Programms ermittelt, ob ein Wert in der Folge noch gelesen werden kann (lebendig ist). Lebendige Werte müssen in Registern gehalten werden, die Register nicht mehr verwendeter Werte können dagegen für andere Werte wiederverwendet werden. Gleichzeitig lebendige Werte können nicht im selben Register liegen, daher wird aus diesem Ergebnis der Interferenzgraph erstellt. Es handelt sich nicht um eine Analyse von Deklarationsorten oder Wertebereichen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. In einer Funktion ist die Zahl gleichzeitig lebendiger Werte an der ungünstigsten Stelle 5. Wie viele Register werden mindestens benötigt, um alle Werte ohne Spill in Registern zu halten, wenn der Interferenzgraph in einem einfachen Fall keine weiteren Einschränkungen außer diesen 5 erzeugt?
  2. Wie oft werden Zählerprüfung und Verzweigung ausgeführt, wenn eine Schleife mit 100 Iterationen durch Loop Unrolling mit viermal aneinandergereihtem Rumpf umgeschrieben wird? (100 sei durch 4 teilbar.)
  3. Welcher allgemeine Ablauf von einem C-Programm bis zur ausführbaren Datei ist richtig?
  4. Wie heißt die Optimierung, die eine kurze Folge erzeugten Maschinencodes durch ein kleines Fenster betrachtet und ungünstige Befehlskombinationen durch bessere Befehle ersetzt?
  5. Welche Optimierung greift im obigen Code nach dem Inlining von sq, und welches Ergebnis ist richtig?

Vergleiche zu diesem Thema