Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Allgemeines, Stimmung

Allgemeines, Stimmung

Pruefer: Phillipsen
Beisitzer: Kamp
Zeit: 30 Minuten (voll ausgenutzt, nix zur Besprechung abgezwackt)

Atmosphaere sehr freundlich und entspannt, obwohl ich „leicht“ nervoes war. Der Beisitzer stellt fragen. Phillipsen fragt mitten rein mit teilweise detail/leicht fiesen Fragen. Vorbereitung: Extrem, da diese Pruefung ja leicht Beruechtigt ist.

P und B haben nicht 100% das gesagt was geschrieben. Mein Gehirn betreibt grad Garbagecollection und swapt das Wissen fuer den normalen Alltag wieder rein. → Grammatik-,Syntax-Fehler nicht komplett, mache ich wann anders fertig.

Viel Spass

Code

  zeug...
  int a[n+1][n+1];
  zeug...
  
  zugriff auf a(load + store)

Fragen

B: Beisitzer P: Pruefer S: Ich

AST und Typpruefung

B: Wir beginnen bei [1]. Was passiert da, fang ganz vorne an.

S: Lexer erklaert, Parser erklart. Auf Nachfrage den Syntaxbaum zu malen, den AST gemalt und gesagt, dass ich den AST, nicht den Syntaxbaum mache:

var_decl
   /      \
 id        type
  |          /   \
 a       int    dims
                   /  \
                      n+1  n+1

B: Ok, wieso ist der Baum nach Parser nicht fertig.

S: Typpruefung, Namenspruefung.

Stack

B: Wie schaut der Stack beim Funktionsaufruf auf, in „userer“ ABI? S: push params, ret, framepointer, lokale variablen

B: Was konnte man da noch hinzufuegen? S: return wert auf stack, SV, caller save regs, calee save

P: Was ist sv? S: Pascal zeug (erklaert)

P: Wo kommt denn der SV her (mit nachfragen, da meine erste Antwort nicht eindeutig war) S: Von der Funktion, die in Schachtelungstiefe drueber ist (also nicht unbedingt der caller)

P: Was ist ein Extremepointer S: Keine Ahnung

B: Ok, jetzt darf ich wieder. Wie macht man jetzt dynamische Arrays S: Erklaert B: Nachgefragt, wenn es mehrere sind S: Erklaert

Codeerzeugung

B: Dynamische programieren, hier ein Beispiel, mach mal (ein Register)

S: Erklaert den Algorithmus in 3 schritten, dann 1 schritt vorgerechnet. Als Baum gegeben: ( a*b)+(c/d)

P: Wie erzeuge ich dann jetzt code? S: Nach Markierungsphase gehe ich durch erzeuge es halt (top-down post-order)

P: Sind wir jetzt fertig? S: Nein Registerzuweisung

P: Aber das hatte man grad schon S: Ja unser Beispiel ist fertig, aber echtes Leben ist hart, und man hat Register wo nicht alles reinkommen darf, speizielle reigster. Das DP kann das nicht

P: Wieso ist es jetzt DP? S: Weil wenn man identische Teilbaeume hat, dann muss man sie nicht mehrmals verwenden, sondern das Ergebnis als Variable weiterverwenden. (damit ist P zufrieden)

B: Yay bin mal wieder dran. B: Nach Code-findung und Registerzuteilung sind wir dann fertig?

S: Wenn es schon Machiniencode dann ja. Ansonsten zwischen-code → M-code. Man kann allerdings unabhaengige Instruktion umsortieren.

P: Wozu ist das gut? Die Instruktion haben soweiso die gleichen Ausfuehrungskosten S: Pipeline… anfange zu erklaeren

P: Ja das reicht uns schon S: Ich kann noch viel mehr zu Hardware P: Ja, dass habe ich befuerchtet.

Graphfaerben

B: Wie funktioniert jetzt Graphfaerben?

S: Lebendigkeit, Kollisionen, Interferenzgraph etc erklaert. Das steht ja recht gut in den Folien. Mit etwas Stupsen kam ich noch darauf, dass die Eintraege im Graph im allgemeinen nicht die virt. Register sind, sondern Lebenspannen! Ein virt Reg kann theoretisch mehrere Lebenspannen haben (zB: R0 ← 0; R1 ← R0 op 4; … R0 ← 0; R3 ← R0 op 5;). UEBT MAL DIE LEBENSSPANNEN ERKLAERUNG EIN LEUTE!!! wissen != draufkommen das P es hoeren will und das man er erklaeren kann :)

P: Sie hatten da noch Spilling erwaehnt. Wie laeuft das?

S: Man muss das Register auf dem Stack sichern und bei Zugriff wieder laden. (Fuer optimierung laedt man in ein virtuelles Register und fuehrt Graphfaerben erneut durch.) → Das hat gefaellt, weil ich nicht draufgekommen bin, was er von mir hoeren will.

Damit war die Zeit um. Nach kurzer Besprechung wurde ich wie immer nach meinem Eindruck gefragt. Ich hatte schon ein paar Fehler, aber konnte iA zeigen, dass ich was wusste und auch verstanden hatte. Mit Note ziemlich zufrieden. P hast zugegeben das bei ggf leicht anderen Fragen es eine Notenstufe besser waere.