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.

26 2.3 Bootstrapping<br />

P<br />

S<br />

S → M<br />

M<br />

M<br />

Abbildung 6: Übersetzungsprozess<br />

Abb. 6 zeigt den Übersetzungsprozess: Der Übersetzer von S nach M läuft auf der<br />

Maschine M und übersetzt das Programm P , geschrieben in der Sprache S in das gleiche<br />

Programm in der Sprache M. Es gibt also jetzt zwei Versionen des Programms, was<br />

in der Abbildung durch unterschiedliche Farben verdeutlicht wird.<br />

P<br />

S<br />

S → M'<br />

M<br />

M<br />

Abbildung 7: Cross compilation<br />

Vor allem im Zusammenhang mit ” embedded systems“, d.h. Mikroprozessoren, die<br />

innerhalb gewisser Geräte ihren Dienst tun, ist häufig nichts anderes als eine ” Cross<br />

compilation“ ( ” Querübersetzung“) möglich, da die Beschränkungen dieser Systeme es<br />

nicht erlauben, dass der Compiler hierauf läuft. In Abb. 7 ist dieser Prozess gezeigt:<br />

Hier ist die Maschine, für die Code erzeugt wurde, nicht identisch mit der Maschine,<br />

auf der der Compiler läuft.<br />

Interpreter können in Verbindung mit virtuellen Maschinen auch ein ideales Werkzeug<br />

für das Portieren von Compilern sein. Dies hat Urs Ammann (1977) mit seinem<br />

portablen Pascal-Compiler grossartig vorgeführt. Der von ihm erdachte Zwischencode<br />

” PCode“ stellt eine abstrakte Stapelmaschine dar. Ein Compiler (s. Abb. 8), der selbst<br />

in Pascal geschrieben ist, übersetzt Pascal in diesen PCode. Dies ist sozusagen die erste<br />

P<br />

M<br />

P<br />

M'<br />

kogrund.pdf

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!