Here you can ask questions and find or give answers to organizational, academic and other questions about studying computer science.

1.1k questions

1.3k answers

1.7k comments

557 users

0 votes
Könnte man nicht sagen ein Lebensintervall einer Variable beginnt mit einem schreibenden Zugriff und endet mit einem lesenden Zugriff? So könnte man doch das auf Folie 105 aufgeführte Problem umgehen oder?

Vielen Dank für alle Beiträge!
in * TF "Emb. Sys. and Rob." by (1.1k points)

1 Answer

+1 vote
 
Best answer

Das Lebensintervall ist bereits so definiert: Es beginnt mit der ersten Zuweisung an die Variable und endet mit dem letzten Lesezugriff. Das Problem auf den genannte Folien ist, dass dieselbe Variable überschrieben wird (was eigentlich ein neues Lebensintervall sein sollte) und erneut gelesen wird. Bei einer einfachen LinearScan-Methode wird das dazwischen liegende "Loch",  in dem die Variable nicht gebraucht wird aufgefüllt, da man jeder Variablen nur ein einziges Intervall zuweisen mag.

Man kann das aber in einfacher Weise umgehen: Viele Compiler wie LLVM stellen heute grundsätzlich eine SSA-Form her (siehe Folie 121 und folgende). Dabei wäre das zweite Intervall eine andere Variable und das Problem mit den Löchern bei der LinearScan-Methode wird elegant umgangen. Die SSA-Form hat viele Vorteile und führt generell zu besseren Ergebnissen bei der Registerallokation (auch beim Graphfärben).

by (170k points)
selected by
Imprint | Privacy Policy
...