Beisitzer: Kreutzer
Prüfer: Philippsen
Prüfungsdauer: 30min
Ich konnte zu wenig erklären warum Strukturen und Algorithmen so verwendet werden wie in der VL vorgestellt.
Detailwissen hat das aber glücklicherweise etwas kompensiert. Bin insgesamt mit einer unerwarteten sehr guten Note raus.
Erster Teil der Prüfung anhand e2-Code mit Klassen, so ungefähr:
class Super var a : int; func foo (....) end class Sub extends Super var b: int; func foo (k: Sub) .... .... k.a .... ..... end func bar (....) end / ********* / O o = new O(); O u = new U();
Wie muss unser Compiler erweitert werden, um das abzubilden?
Blatt mit Grammatik bekommen. Was muss konkret hinzugefügt werden?
Warum sind Lexer und Parser überhaupt getrennt?
Kann ein Lexer die Arbeit des Parsers übernehmen?
Was muss noch getan werden?
Wie wird das dann im Speicher umgesetzt? Bitte graphisch darstellen.
Gehen wir zur letzten Phase, was macht man da?
Warum ist Instruktionsreihenfolge wichtig?
Muss Datenabhängigkeiten geachtet werden?
Wie kann denn der IR zu Maschinenbefehlen transformiert werden?
Wie funktioniert das mit dynamischer Programmierung? (habe ein Stück IR Code bekommen)
Der Baum sieht jetzt anders aus - wieso?
Warum braucht man den Baum?
Dann machen Sie mal das Verfahren
Warum reichen denn 2 Register bei dem Befehl r ← r op r?
Zeit ist rum.