Information Technology Reference
In-Depth Information
kann so jedoch nicht verfahren werden, da die indirekte Adressierung des Sprungziels mit den
Befehlen in Tabelle 1.9 nicht möglich ist. Hier hilft ein Trick: Indem verlangt wird, dass die Befehle
im Hauptspeicher an 16-Bit-Grenzen ausgerichtet sein müssen, kann das Sprungziel statt als Byte-
als 16-Bit-Adresse codiert und ein Adressbit eingespart werden. In diesem Bit lässt sich der Opera-
tionscode des Unterprogrammaufrufs unterbringen. Für den Unterprogrammaufruf legt man den ein
Bit breiten Operationscode willkürlich als gleich 1 fest. Zur Abgrenzung aller anderen Befehle steht
somit fest, dass das entsprechende Bit gleich 0 sein muss.
Tabelle 1.9. Befehlssatz einer einfachen 3-Adressarchitektur
Befehl
Funktion
Befehlscode
sub
rD , rSimm 1 , rS 2
Subtraktion: rD = rS 1 - rS 2
oder
000 i rSimm 1
rS 2
rD
rD = imm 1 - rS 2
Laden:
rD = mem [ rS 1 + rS 2 ]
ld
rD , [ rSimm 1 , rS 2 ]
001 i rSimm 1
rS 2
rD
oder
rD = mem [ imm 1 + rS 2 ]
st
[ rSimm 1 , rS 2 ], rS 3
Speichern:
mem [ rS 1 + rS 2 ] = rS 3
010 i rSimm 1
rS 2
rD
oder
mem [ imm 1 + rS 2 ] = rS 3
bmi
rS , label
Bedingter Sprung:
if ( rS < 0) goto label +pc
0110
rS
label
call
label
UP-Aufruf:
r0 = pc, goto label
1
label
ret
Rücksprung: goto r0
0111
0000
0000
0000
Je geringer die Anzahl der Bits eines Operationscodes ist, desto schwieriger ist die Codierung eines
Befehls. Deshalb ist es besser, zuerst die Befehle zu codieren, die den meisten Platz für Adressen
und Modusbits benötigen. In Tabelle 1.9 sind dies die Befehle sub, ld und st, in denen 13 Bits zur
Codierung der Adressen rSimm 1 , rS 2 , rS 3 bzw. rD und des Modusbits i benötigt werden. Letzteres
ist erforderlich, um festzulegen, ob der Operand rSimm 1 registerdirekt oder unmittelbar adressiert
werden soll. Von den verbleibenden drei Bits muss das oberste zur Abgrenzung vom call-Befehl
immer gleich 0 sein. Die restlichen beiden Bits werden schließlich benutzt, um die drei Befehle ein-
deutig voneinander unterscheiden zu können.
Nach Codierung der Befehle call, sub, ld und st ist nur noch die Bitkombination 011 in den oberen
drei Bits unbenutzt. Da noch zwei Befehle codiert werden müssen (bmi und ret), wird der Operati-
onscode durch ein zusätzliches Bit erweitert. Es ist gleich 0 beim bedingten Sprung bmi (also 0110)
und gleich 1 beim Rücksprungbefehl ret (also 0111). Die nach Festlegung des Operationscodes
freien 12 Bits werden beim bedingten Sprung benötigt, um die beiden Adressen darin zu codieren.
Beim Rücksprungbefehl werden sie hingegen nicht benötigt. Um den Befehlssatz später jedoch
erweitern zu können, wird definiert, dass diese Bits gleich Null sein müssen.
1.4 Zustände
Ein Prozessor verarbeitet Daten, indem er sie Schritt für Schritt transformiert. Da
sich alle Befehle eines Programmiermodells deterministisch verhalten, ist es zu
jedem Zeitpunkt der Bearbeitung eines Programms möglich, von den bis dahin
berechneten Daten auf die sich durch den nächsten auszuführenden Befehl ergeben-
den Daten zu schließen. Der zu verarbeitende Befehl wird jeweils eindeutig über
seine Adresse definiert, so dass die Ausführung eines Programms sich auch als eine
 
Search WWH ::




Custom Search