Compilerbauhome Compilerbau: Portierung Prof. Dr. Uwe Schmidt FH Wedel

Portierung

weiter

weiter

Compiler

Bootstrapping
weiter
Aufgabe
Entwicklung eines Compilers für eine Quellsprache QS und eine Zielmaschine A in der Implementierungssprache QS
weiter
Quellsprache = Implementierungssprache
weiter
Voraussetzung
Es gibt auf einer Maschine B einen Compiler für die Sprache QS
weiter
Beispiel
QS
C
ZS
xbox (= Zielmaschine)
IS
C
B
x86
weiter
Compiler
.0
existierender C -> x86 Compiler
.1
Neuentwicklung: C -> xbox in C
.2
lauffähiger C -> xbox auf x86
.3
lauffähiger C -> xbox auf xbox
(auf x86 erzeugt)
.4
lauffähiger C -> xbox auf xbox
(compiliert mit eigenem auf x86 erzeugtem Compiler)
.5
lauffähiger C -> xbox auf xbox
(compiliert mit eigenem auf xbox erzeugtem Compiler)
weiter
Test
Kann der neue Compiler (.3) komplexe C-Programme, zum Beispiel sich selbst, korrekt übersetzen?
weiter
Test
Arbeitet der so erzeugte Compiler (.4) richtig?
weiter
.4 == .5
Compiler reproduziert sich auf xbox, also wird x86 nicht mehr gebraucht
weiter
merke
Bootstrapping kann auf neuer Architektur wiederholt werden

weiter

Interpretierer

Portierung
eines Compilers für eine virtuelle Maschine
weiter
Beispiel
Quellsprache ist Java
Ausgangsrechner ist x86
Zielrechner ist xbox
weiter
.0
C Compiler auf x86
.1
JVM Interpretierer in C
.2
JVM Interpretierer lauffähig auf x86
.3
Java -> JVM Compiler auf JVM
.2 + .3
Java -> JVM Compiler auf x86
.0'
C Compiler auf xbox
.2'
JVM Interpretierer lauffähig auf xbox
.2' + .3
Java -> JVM Compiler auf xbox
weiter
gut
Nur ein Programm muss portiert werden.

weiter

Zwischensprachen

Motivation
Reduktion des Entwicklungsaufwands
Erleichterung der Portierung
Sprachmischung
weiter
schlecht
n Sprachen, m Maschinen: n*m Compiler
weiter
Idee
eine gemeinsame Zwischensprache
weiter
gut
n Compiler front ends
gut
m Compiler back ends
weiter
merke
Entwurfsziele
Widersprüchliche Ziele
Laufzeit-Effizienz <--> kompakter Code
kurze Übersetzungszeiten <--> Laufzeiteffizienz
Korrektheit <--> Optimierungen
gute Fehlerdiagnose <--> einfache, schnelle Compilierung
weiter

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel