next up previous
Next: Über dieses Dokument

M. Sperber, H. Klaeren Wintersemester 1997/98


Compilerbau I


Blatt 13

Abgabe: 12.2.1998

  1. [5 Punkte] Beweisen Sie, daß die Zuordnung lokaler Namen an Environment-Indizes in der Tat statisch ist.
  2. [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?
  3. [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.
  4. [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