UE1 Registerzuteilung mit getreg: Registerauswahlreihenfolge

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

UE1 Registerzuteilung mit getreg: Registerauswahlreihenfolge
In tut10_slides_handout.pdf (UE1-Uebung 10), Folie 6 gibt getreg() in der Zeile mit der Instruktion “%v4 = mul c, a” das Register r1 zurueck und nicht r0 (was bei alphabetischer sotierung die erste Wahl waere).

Sehe ich es richtig das nicht spezifiziert ist, welches Register in diesem Fall (in der Vorlesung auf Folie 10-22 beschrieben als “Falls x (aus x ← y op z) in einem Register stehen muss/soll, wähle ein benutztes Register R und schreibe Inhalt von R in Speicherplätze aller darin enthaltenen Variablen. Gebe dann R zurück”) ausgewaehlt wird? Wenn man die Aufgabe loest koennte man also genauso gut r0 auswaehlen?


Genau. Im Prinzip ist beides möglich und das Verfahren (zumindest in der in der Vorlesung bzw. Übung beschriebenen Form) lässt offen, welches Register in diesem Fall verwendet werden soll. Es bietet sich an, eine geeignete Heuristik für diese Entscheidung zu verwenden. Diese könnte in diesem Fall z.B. lauten: Verwende das Register von der Variable mit der längsten Lebensspanne (weil dadurch später ggf. mehr Kollisionen vermieden werden können).

1 „Gefällt mir“