Next: Über dieses Dokument
M. Sperber, H. Klaeren Wintersemester 1997/98
Compilerbau I
Blatt 13
Abgabe: 12.2.1998
- [5 Punkte] Beweisen Sie, daß die Zuordnung lokaler Namen
an Environment-Indizes in der Tat statisch ist.
- [5 Punkte] In Mini-Caml, Lambda und Cps
kann die lokale Umgebung immer nur um eine Bindung auf einmal
erweitert werden. Warum ist es trotzdem sinnvoll, in Hinblick auf
spätere Weiterentwicklungen bei der Code-Generierung neben der Tiefe
des Zugriffs auch noch einen Offset beim Environment-Zugriff zu
berücksichtigen?
- [5 Punkte] Schreiben Sie eine Funktion
val make_access : int -> int -> int -> string list
wobei make_access d o r Assembler-Instruktionen
liefert, welche den Wert der Bindung bei Tiefe d und Offset o im
lokalen Environment im Register r abliefert.
- [15 Punkte] Schreiben Sie eine Funktion, welche für die
Cps.exp''=Konstruktoren Return, Call und
TailCall Assembler-Code erzeugt. Gehen Sie dabei davon
aus, daß es eine Funktion gibt, die für
Cps.valexp-Ausdrücke Code erzeugt und das Ergebnis in einem
Register hinterläßt. Benutzen Sie auch für Cps.cont-Werte
einen Platzhalter.
Michael Sperber [Mr. Preprocessor]
Thu Feb 5 17:00:44 MET 1998