Hardware Reference
In-Depth Information
Befehlsformat . Maschinen, die damit arbeiten, heißen Stack-Maschinen (gele-
gentlich auch Kellermaschinen ). Zentraler Bestandteil solcher Maschinen ist
ein Stack, auf dem die Operanden bereit gestellt werden und auf den nach der
Operation das Ergebnis abgelegt wird. Weil dadurch beide Operanden und
das Ergebnis implizit angegeben sind, kommt das Null-Adress-Befehlsformat
zustande. Ein Befehl
ADD
addiert beispielsweise die obersten Eintrage des Stacks und legt die berechne-
te Summe auf den Stack zuruck. Daneben sind Transportbefehle erforderlich,
die Operanden (z.B. Variablenwerte) aus dem Hauptspeicher auf den Stack
transportieren und umgekehrt - so genannte Push- und Pop-Operationen.
Programme fur Stack-Maschinen lassen sich leicht automatisch erzeugen.
Compiler erzeugen bei der Ubersetzung von Ausdrucken so genannte Ab-
stract Syntax Trees , aus denen sich der Code durch Traversieren ergibt.
Abbildung 1.9 zeigt den Abstract Syntax Tree fur den einfachen Ausdruck
D = C ·
( A − B ). Der Code, der sich daraus fur eine Stack-Maschine ergibt,
ist ebenfalls mit angegeben. In Abbildung 1.10 ist veranschaulicht, wie sich
der Stack bei der Ausfuhrung des Programmstucks entwickelt. Ausgehend
von einem leeren Stack werden zunachst die Operanden abgelegt. Der linke
Operand wird dabei stets zuerst auf den Stack gelegt. Die arithmetischen
Operationen holen danach die Operanden vom Stack und legen ihre Ergeb-
nisse auf dem Stack ab. Nach dem Wegnehmen des letzten Ergebnisses ist
der Stack wieder leer.
Die Schreibweise von Ausdrucken, bei der die Operation nach den Operanden
angegeben wird, wird auch als Postfix-Notation bzw. Umgekehrt Polnische
Notation bezeichnet.
Auch bedingte Verzweigungen lassen sich mit Stacks leicht realisieren. Ein
entsprechender Befehl nimmt das oberste Element vom Stack und pruft es
gegen eine Bedingung. Als Argument braucht dieser Befehl eine Zieladresse,
die angesprungen wird, falls die Bedingung erfullt ist. Der Befehl
IFZERO ziel
wurde das Programm an der mit ziel bezeichneten Marke fortsetzen, falls
das oberste Element auf dem Stack 0 ist.
Diese Maschinen haben durchaus praktische Bedeutung in einigen Nischen.
Beispielsweise basiert die Java Virtual Machine (JVM) auf diesem Prinzip.
Es gibt Ansatze, reale Prozessoren zu bauen, die in der Lage sind, Java-
Bytecode auszufuhren, z.B der Prozessor aj-100 von Ajile Systems ( http:
//www.ajile.com/ ).
Ferner baut PostScript, eine Programmiersprache mit Moglichkeiten zur Gra-
fikausgabe, auf das Prinzip der Stack-Maschinen. Intel organisiert die Aus-
fuhrung von Gleitkommabefehlen als Stack-Maschine. Das heißt, die Gleit-
Search WWH ::




Custom Search