next up previous
Nächste Seite: Test-Fragen Aufwärts: Compilerbau Vorlesung, Wintersemester 2003 Vorherige Seite: Register

Ergänzungen, Zusammenfassung

Compiler oder Interpreter?

$ $Id: inter.tex,v 1.1 2004/01/28 12:09:09 joe Exp $ $

Compiler und Interpreter

schließlich wird doch interpretiert: (CPU ist Interpreter für die Maschinensprache).

statt konkreter Maschine: abstrakte Maschine benutzen.

Compiler erzeugt dann abstrakten Maschinencode,

Laufzeitumgebung muß Interpreter für abstrakte Maschine enthalten (Beispiele: Java, Pascal)

Cross-Compilation

$ $Id: cross.tex,v 1.1 2004/01/28 12:09:09 joe Exp $ $

Drei Parameter (Sprachen) für einen Compiler: Q$ _$IZ:

Beispiel: $ S = \ensuremath{\text{C}_\text{Sparc}\text{Sparc}}$. -- Wie entsteht C$ _$IntelIntel?


Schreiben $ P = \ensuremath{\text{C}_\text{C}\text{Intel}}$.

Compiliere $P$ mit $ S$ (auf Sparc), es entsteht $ Q = \ensuremath{\text{C}_\text{Sparc}\text{Intel}}$.

Compiliere $P$ mit $Q$ (auf Sparc), es entsteht $ \ensuremath{\text{C}_\text{Intel}\text{Intel}}$.

Bootstrapping zur Selbst-Optimierung

$ $Id: boot.tex,v 1.1 2004/01/28 12:09:09 joe Exp $ $

gegeben:

gesucht: S$ _$MM

Compiliere $ G$ mit $A$, ergibt $ B = \ensuremath{\text{S}_\text{M'}\text{M}}$
(erzeugt effizienten Code, ist aber selbst nicht effizient).

Compiliere $ G$ mit $B$, ergibt $ C = \ensuremath{\text{S}_\text{M}\text{M}}$
(erzeugt effizienten Code und ist selbst effizient).

auf diese Weise auch Implementierung von Sprach-Erweiterungen.

Getrennte Kompilation

$ $Id: sep.tex,v 1.1 2004/01/28 12:09:09 joe Exp $ $

reale Compiler haben als Eingabe gar nicht ,,das Quellprogramm``.

größere Software besteht aus Modulen, die getrennt entwickelt und implementiert werden.

eventuell gibt es gar kein Hauptprogramm (z. B. bei Bibliotheken).

modulweise Kompilation:

Getrennte Kompilation (II)

schwierig, falls Sprache kein Modulkonzept hat (C, Pascal)

$\to$ Aufgaben an Tools delegieren (Make(file), Präprozessor, Linker, Loader).

die wissen aber nicht mehr viel über die Sprache (z. B. Typen, Initialisierungs-Reihenfolgen)


schon besser sind Sprachen mit Modulen (Modula, Ada)

aber immer noch schwierig, falls (wieder einmal) das Objekt/Klassen-Konzept dafür herhalten muß (C++, Java)

Modul-Schnittstellen

Modul besteht aus Schnittstelle und Implementierung

Ideal: zur Kompilation eines Moduls soll Kenntnis der Schnittstellen der benutzen Module ausreichen.

(d. h. keine Re-Kompilation, falls sich nur andere Implementierung ändert.)

Design-Entscheidungen:

Geschichte des Compilerbaus

$ $Id: hist.tex,v 1.1 2004/01/28 12:09:09 joe Exp $ $

Details wie Symboltabellen, Fehlerbehandlung, Optimierungen ab 1970 im wesentlichen bekannt.

Geschichte des Compilerbaus (II)

seitdem neuere Entwicklungen zu

Compilerbau: Zweck der Lehrveranstaltung

$ $Id: zweck.tex,v 1.1 2004/01/28 12:09:09 joe Exp $ $

Bestandteile und Arbeitsweise eines Compilers verstehen,

dabei zugrundeliegende Modelle (Grammatiken, Automaten, Bäume, Graphen) und Verfahren (aus dem Grundstudium) wiedererkennen,

Fähigkeiten und Fertigkeiten im Umgang mit Compilern (gcc, javac) und Werkzeugen (make, flex, bison, javap, gdb) erwerben,

bei eigenen Projekten anwenden können:

Jedes Programm, das einen Eingabetext liest und eine Aktion ausführt, enthält Elemente eines Übersetzers (Compilers/Interpreters).

Mathematische Methoden

Datenstrukturen

Autotool-Highscore-Auswertung

320 29892 Andre Heinicke
263 29860 Andreas Möhlenbrock
196 27328 Felix Franck
121 ...

Preise (teilweise) gesponsort von: http://www.capitospiele.de


next up previous
Nächste Seite: Test-Fragen Aufwärts: Compilerbau Vorlesung, Wintersemester 2003 Vorherige Seite: Register
Johannes Waldmann 2004-01-28