Bootstrapping
|
|
| |
Aufgabe
|
Entwicklung eines Compilers für eine Quellsprache QS und eine
Zielmaschine A in der
Implementierungssprache QS
|
| |
|
Quellsprache = Implementierungssprache
|
| |
Voraussetzung
|
Es gibt auf einer Maschine B einen Compiler für die Sprache QS
|
| |
Beispiel |
|
QS |
C
|
ZS |
xbox (= Zielmaschine)
|
IS |
C
|
B |
x86
|
| |
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)
|
| |
Test
|
Kann der neue Compiler (.3) komplexe C-Programme, zum Beispiel sich selbst, korrekt übersetzen?
|
| |
Test
|
Arbeitet der so erzeugte Compiler (.4) richtig?
|
| |
.4 == .5
|
Compiler reproduziert sich auf xbox, also wird x86 nicht mehr gebraucht
|
| |
|
Bootstrapping kann auf neuer Architektur wiederholt werden
|