11.09.2013 Aufrufe

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

30 2.3 Bootstrapping<br />

Pascal → X<br />

Pascal<br />

Pascal → X<br />

X<br />

X<br />

Pascal → X<br />

Abbildung 14: Selbstcompilation<br />

war zum Teil noch 1980 und später der Stand der Technik. Wenn ein Compiler jedoch<br />

in seiner eigenen Sprache geschrieben ist, haben wir offensichtlich eine ” Henne-Ei-<br />

Problematik“: Ich brauche einen funktionierenden Compiler, bevor ich den Compiler<br />

zum funktionieren bringen kann. Die von Wirth verwendete Methodik zu diesem Prozess<br />

soll im folgenden geschildert werden.<br />

MiniP → CDC<br />

Fortran<br />

Abbildung 15: Bootstrap des Pascal-Compilers, Phase 1<br />

In einem ersten Schritt wird eine Teilmenge (hier ” MiniP“ genannt) von Pascal ausgezeichnet,<br />

die ausreicht, um den Pascal-Compiler zu schreiben. Mit irgendeiner existierenden<br />

Sprache (in diesem Fall Fortran) wird ein Compiler (Abb. 15) geschrieben,<br />

der MiniP in CDC-Maschinencode übersetzt. Dieser Compiler darf selbst beliebig ineffizient<br />

sein und auch beliebig ineffizienten Code erzeugen, Hauptsache, der erzeugte<br />

Code ist korrekt. Mit Hilfe des Fortran-Compilers (Abb. 16) lässt sich damit ein Compiler<br />

von MiniP in CDC-Code erzeugen, der auch auf der CDC läuft.<br />

Dann wird der MiniP-Compiler nochmals in seiner eigenen Sprache geschrieben,<br />

wobei diesmal (Abb. 17) Wert auf die Erzeugung von effizientem Maschinencode gelegt<br />

wird.<br />

Durch eine Selbstcompilation (Abb. 18) entsteht ein nativer MiniP-Compiler für die<br />

CDC, der guten Code erzeugt, aber selbst langsam läuft.<br />

Eine zweite Selbstcompilation behebt diesen Mangel; Ergebnis ist ein effizienter<br />

MiniP-Compiler, der selbst effizient läuft. Eine dritte Selbstcompilation müsste dann<br />

X<br />

kogrund.pdf

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!