Compiler

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?

  1. A5
  2. B4
  3. C10
Antwort und Erläuterung anzeigen

Antwort: A. 5

Die fünf gleichzeitig lebendigen Werte interferieren alle miteinander, sodass im Interferenzgraphen die fünf Knoten durch Kanten vollständig verbunden sind (vollständiger Graph) und zum Färben mindestens fünf Farben nötig sind. In einfachen Fällen wie linearem Code, in dem sich Lebensdauern als Intervalle darstellen lassen, kann mit so vielen Farben gefärbt werden, wie es höchstens gleichzeitig lebendige Werte gibt, sodass fünf Register genügen. Mit vier wäre irgendwo ein Spill, also das Auslagern eines Werts in den Speicher, nötig. Zehn wäre mehr als nötig.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. 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.)
  2. Welcher allgemeine Ablauf von einem C-Programm bis zur ausführbaren Datei ist richtig?
  3. Wie heißt die Optimierung, die eine kurze Folge erzeugten Maschinencodes durch ein kleines Fenster betrachtet und ungünstige Befehlskombinationen durch bessere Befehle ersetzt?
  4. Welche Optimierung greift im obigen Code nach dem Inlining von sq, und welches Ergebnis ist richtig?
  5. Welche Beschreibung von Software Pipelining ist richtig?

Vergleiche zu diesem Thema