Hinweise und Errata zum Testatblatt

Aufgabe 3

Der Satz "Make-machine allerdings weigert sich, das resultierende Programm auch nur zu assemblieren!" ist irreführend:

Gemeint ist daß Schlotterbeck behauptet, daß make-machine das resultierende Programm nicht korrekt assembliert.

Korrigiert am 17.6.2000, 12:00.

Aufgabe 3

Im Beispielaufruf von expand-macros fehlte ein Klammernpaar um die Makrodefinitionen von push und pop.

Korrigiert am 17.6.2000, 12:00.

Aufgabe 3

Am Ende der Ausgabe von replace-push-pop hatte sich ein überflüssiges "e" eingeschlichen

Korrigiert am 22.6.2000, 16:00

Aufgabe 3

Dort ist einmal ein "geändertes Fibonacci-Programm" und einmal ein "vereinfachtes Fibonacci-Programm" mit push und pop verlangt. Es handelt sich beide Male um dasselbe Programm; eine Abgabe genügt also.

Korrigiert am 20.6.2000, 11:00

Aufgabe 4

In der Aufgabe ist ein Interpreter gefragt, also nicht ein Programm, daß einen arithmetischen Ausdruck in ein Assemblerprogramm übersetzt. Etwa so:

> (run pnms-machine) (+ 23 (* 14 2)) ; Eingabe des Benutzers 51 ; Ausabe

Wer trotzdem schon einen "Compiler" geschrieben hat (eigentlich die schwierigere Aufgabe) melde sich bitte bei Tutor oder Mike Sperber. Das geht schon in Ordnung ...

Aufgabe 5

Unter "Abgabe" sind ein "Programm von Schlotterbecks Serviette" und "Änderungen am Interpreter erwähnt". Diese stammen aus einer Aufgabe, die aus dem Blatt gestrichen wurde und können darum ignoriert werden.

Korrigiert am 18.6.2000, 11:00

Aufgabe 5

Im Interpreter soll wirklich nicht evaluate-program übersetzt werden. Funktionieren soll er etwa folgendermaßen:

> (define int-machine (make-machine ...)) > (set-register-contents! int-machine 'expression '((lambda (a b) (+ a b)) 2 3) > (run machine) > (get-register-contents int-machine 'expression) 5
Aufgabe 6

Hier sollen Änderungen am Interpreter vorgenommen werden, so daß der Interpreter gerade der Lösung von Blatt 5, Aufgabe 2f entspricht. Da bei diesem aber nur einige Zeilen geändert sind, empfiehlt es sich nicht, von vorne anzufangen: Es reicht, die den geänderten Zeilen entsprechenden Teile zu ändern. Eine Musterlösung für Blatt 5 hängt übrigens auf der entsprechden Seite.

Allgemeines

Wer sich bei der Programmierung mit Listen in Assembler wundert, daß plötzlich quote in den Listen herumgeistert, hat wahrscheinlich

(const '())

im Programm stehen. Dies ist aber äquivalent zu:

(const (quote ()))

Stattdessen ist das korrekte Literal für die leere Liste:

(const ())

Michael Sperber [Mr. Preprocessor]
Last modified: Mon Jun 26 16:53:35 MST 2000