Compiler

Welche Eigenschaft des Dreiadresscodes (Three-Address Code), einer Form der Zwischendarstellung, ist richtig?

  1. AEin Befehl kann beliebig viele Operationen und Klammern enthalten
  2. BEin Befehl besteht aus höchstens drei Adressen und einer Operation
  3. CAls Adressen werden stets physische Speicheradressen geschrieben
Antwort und Erläuterung anzeigen

Antwort: B. Ein Befehl besteht aus höchstens drei Adressen und einer Operation

Beim Dreiadresscode werden komplexe Ausdrücke in eine Folge einfacher Befehle mit jeweils nur einer Operation zerlegt. x = (a + b) * c wird z. B. zu den zwei Befehlen t1 = a + b und x = t1 * c, wobei in einem Befehl höchstens drei Adressen auftreten: das Ergebnis und zwei Operanden. Zwischenwerte erhalten temporäre Namen (t1 usw.). Dadurch wird die Berechnungsreihenfolge klar, und Optimierung sowie Umsetzung in CPU-Befehle fallen leichter. Adressen sind Variablen oder temporäre Namen, keine physischen Adressen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Was wird bei der Lebendigkeitsanalyse (Liveness Analysis), die als Vorbereitung der Registerzuteilung durchgeführt wird, ermittelt?
  2. 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?
  3. 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.)
  4. Welcher allgemeine Ablauf von einem C-Programm bis zur ausführbaren Datei ist richtig?
  5. Wie heißt die Optimierung, die eine kurze Folge erzeugten Maschinencodes durch ein kleines Fenster betrachtet und ungünstige Befehlskombinationen durch bessere Befehle ersetzt?

Vergleiche zu diesem Thema