Allgemeine Form der Programme:
(let* ((r1 (...))
(r2 (...))
(r3 (...)))
...
(r4 ...))
für jeden Zeitpunkt ausrechnen:
Menge der freien Register
(= deren aktueller Wert nicht (mehr) benötigt wird)
nächstes Zuweisungsziel ist niedrigstes freies Register (andere Varianten sind denkbar)
vor jedem UP-Aufruf: register shuffle (damit die Argumente in R0,…, Rk stehen)