Information Technology Reference
In-Depth Information
1:
forever {
1:
forever {
2:
instr = prog [pc];
2:
instr = prog [pc];
3:
pc = pc + 1;
3:
pc = pc + 1;
4:
case (instr) {
4:
case (instr & 0x1fff) {
5:
ADD_0_0_0:
data0 = data0 + data0;
5:
ADD_0_0:
res = data0 + data0;
6:
ADD_0_0_1:
data0 = data0 + data1;
6:
:
7:
:
7:
}
8:
ADD_7_7_7:
data7 = data7 + data7;
8:
case (instr >> 13) {
9:
SUB_0_0_0:
data0 = data0 - data0;
9:
R0:
data0 = res;
10:
:
10:
R1:
data1 = res;
11 :
}
11 :
:
12: }
12:
}
13: }
a
b
Bild 4.2. Programme zur Interpretation des in Bild 4.1 dargestellten virtuellen Prozessors. a Ein-
schrittige, b zweischrittige Decodierung eines Befehls inklusive aller darin codierter Adressen
Ein Kompromiss zwischen dem in Bild 4.1 und dem in Bild 4.2a aufgelisteten Programmen ist in
Bild 4.2b dargestellt. Anstatt die Befehle in einem Schritt durch Fallunterscheidung zu decodieren,
wird hier zweischrittig verfahren: Im ersten Schritt (Zeile 4 bis 7) werden der Operationscode und
die beiden Quelloperanden ausgewertet, die Operation ausgeführt und das Ergebnis in einer tempo-
rären Variablen res zwischengespeichert. Im zweiten Schritt (Zeile 8 bis 12) wird das erzeugte
Ergebnis dem jeweiligen Zielregister zugewiesen. Statt der insgesamt 65536 sind hierbei nur noch
8200 Fälle zu unterscheiden. Allerdings verlangsamt sich auch die Bearbeitung eines Schleifen-
durchlaufs. Es sei dem Leser überlassen, die zum Umgang mit Schleifenbefehlen notwendigen
Erweiterungen durchzuführen.
Die zuvor beschriebenen Programme implementieren Interpreter, sie lassen sich
aber auch als eine Verhaltenssimulationen des in Bild 4.1 dargestellten realen Pro-
zessors bezeichnen. Während jedoch bei einer Simulation die Untersuchung eines
exakten Verhaltens im Vordergrund steht, ist es bei der Interpretation bzw. der sog.
Emulation die semantisch korrekte möglichst schnelle plattformunabhängige Aus-
führung. Natürlich ist es möglich, das interpretierende Programm und den realen
Prozessor zu einer Einheit zu verbinden. Dabei wird der Interpreter z.B. im Mikro-
programm codiert und bildet ein normalerweise komplexes Programmiermodell auf
ein einfacheres Programmiermodell ab - meist zur Einsparung von Kosten.
Die Technik wurde bereits 1964 von IBM in der 360-Serie verwendet, und zwar, um
unterschiedliche, sich in Geschwindigkeit und Kosten deutlich unterscheidende
Rechner anbieten zu können. Es verwundert nicht, dass der Begriff der Emulation
auf diese Zeit zurück geht. Geprägt wurde er von S. Tucker, der mit der Portierung
von Programmen der IBM 7090 betraut war und dabei vorschlug, die Funktionalität
der IBM 360 durch Mikroprogrammierung um die Möglichkeit der „schnellen
Simulation der alten Programme auf Maschinenebene“ zu erweitern [58].
4.1.2 Laufzeittransformation
Ein gut optimierter, z.B. entsprechend Bild 4.2a realisierter Interpreter, wird selbst
unter günstigsten Voraussetzungen einen virtuellen Befehl nicht unter acht Taktzyk-
Search WWH ::




Custom Search