Allgemein

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.

Prüfung

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.