Inhaltsverzeichnis

Prüfungsprotokoll

Prüfer: Marius Kamp

Bemerkungen: Sehr faire Prüfung, wirklich angenehme Atmosphäre, der Einstieg über die Übung hilft beim reinkommen. Stellenweise war ich glaube ich etwas zu schnell (zu viel Inhalt in zu kurzer Zeit), wir waren wohl wirklich flott durch die angedachten Themen durch.

Ergebnis: Sehr gut

Praktikum

Was haben wir gemacht?

Tvm, virtuelle maschine,…

Loader:

Was tut der, wofür… Welche Strukturen haben wir da so?

Interpreter:

Jit:

Was macht jit1: instruktionsweise Assembler emittieren

Jetzt wollen wir das aber inkrementell (und just in time) machen? Worauf müssen wir achten? ??? (Wollten auf Trampolin raus, hab dann nach dem Hinweis erklärt, was das Trampolin so tut)

Wie kann man das Trampolin optimieren:

  1. Einbetten
  2. Durchgefädelte Interpretation. Bspw. bc_proc und bc_func in globale Variablen legen, damit sie nicht als Parameter den direkten Funktionsaufruf stören und dann ein globales Feld für die anzuspringenden „Native-code Adressen“ haben. Dort dann zunächst Trampolin hinterlegen, nach jitten dann die native Adresse…

Registervergabe was haben wir wie gemacht?

Inlining:

Vorlesung

Exceptions:

Was müssen wir beachten, wenn wir Ausnahmen in der Sprache haben? Ausnahmetreue, etc.

Garbage Collection:

Prolog:

Gegeben ist folgendes Programm:

p(a, c).
p(b, c).

und die folgende Anfrage:

p(b, X)

Wie würde der M.A.U.S interpreter das Programm ausführen?

initial:

p(b, X), << ("X", X)

<HTML><ol style=„list-style-type: decimal;“></HTML> <HTML><li></HTML><HTML><p></HTML>Attach<HTML></p></HTML>

[p(a,c) ?= p(b, X)], << ("X", X)
[p(b,c) ?= p(b, X)], << ("X", X)

<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>Unify schlägt fehl, zeile abräumen<HTML></p></HTML>

[p(b,c) ?= p(b, X)], << ("X", X)

<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>Unify erfolgreich<HTML></p></HTML>

[p(b,c) == p(b, X)], << ("X", c)

<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>Match<HTML></p></HTML>

<< ("X", c)

<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>Succeed<HTML></p></HTML>

Ausgabe: X = c

<HTML></li></HTML><HTML></ol></HTML>

Dynamic Libraries

Wie funktionieren dynamische Bibliotheken? (PIC, GOT, PLT, was macht der Linker wann…)