Hardware Reference
In-Depth Information
A.2
A.2 MMIX -Essentials
MMIX spielt in diesem Buch eine große Rolle. Allerdings ist es fur das Verstand-
nis dieses Buches nicht erforderlich, eigene MMIX -Programme schreiben zu
konnen. Dieser Abschnitt fasst die wichtigsten Eigenschaften zusammen, die
notwendig sind, um die Beispiele dieses Buches verstehen zu konnen. Dieser
Abschnitt enthalt Querverweise auf Kapitel des Buches, wo Eigenheiten von
MMIX unter Aspekten der Rechnerarchitektur erklart werden. Zum besseren
Verstandnis sollen diese Querverweise herangezogen werden.
MMIX besitzt 256 allgemein verwendbare Register, die mit $0 bis $255 be-
zeichnet werden (oder abstrakt mit $X , $Y und $Z ). Jedes dieser Register
kann einen 64-Bit-Wert aufnehmen. Dabei wird nicht unterschieden, ob dieser
Wert eine ganze Zahl, eine Gleitkommazahl oder eine Adresse reprasentiert.
Neben den 256 allgemein verwendbaren Registern gibt es 32 Spezialregister
mit wiederum 32-Bit-Breite, denen eine besondere Rolle bei einigen Befehlen
zukommt. Die Spezialregister sind mit rA bis rZ bezeichnet 1 . Beispielsweise
ist rA das Arithmetik-Status-Register. Uberlauf, oder Division durch 0 wird
in bestimmten Bits dieses Registers signalisiert.
Bei MMIX wird ein festes Befehlsformat eingesetzt. Jeder Befehl besteht aus
32 Bit (vier Byte). Die ersten 8 Bit werden verwendet, um den Befehl zu
codieren (Opcode). Somit kennt MMIX 256 verschiedene Befehle. Die nachsten
drei Bytes konnen wie folgt aufgebaut sein (siehe dazu Abbildung 1.7):
Drei 8-Bit-Werte: zwei Operanden und Nummer des Zielregisters der Ope-
ration ( ADD $0,$1,$2 oder ADD $0,$1,1 ).
24-Bit-Direktoperand, als Offset bei unbedingten Sprungen ( JMP ).
Eine Registernummer (acht Bit), gefolgt von einem 16-Bit-Direktoperan-
den (um z.B. einen Wert in ein Register zu schreiben: SET $0,wert ,oder
fur bedingte Sprunge BZ $X,ziel - siehe unten).
Als RISC-Prozessor weist MMIX eine Register-Register-Architektur auf (siehe
Abschnitt 1.3.4). Arithmetische und logische Befehle konnen nur Operanden
aus Registern beziehen und schreiben ihre Ergebnisse stets in Register zuruck.
Fur das Lesen aus dem Speicher oder das Schreiben in den Speicher gibt es
eigene Befehle, die ihrerseits ausschließlich fur den Speicherzugriff zustandig
sind.
Die meisten Befehle sind gemaß folgendem Muster aufgebaut:
ADD $X,$Y,$Z
addiert die Werte aus den Registern $Y und $Z und schreibt das Ergebnis
nach $X . Insbesondere gehorchen diesem Muster folgende Befehlsgruppen:
1 Um auf 32 zu kommen gibt es noch einige mit doppeltem Buchstaben rXX , rYY
etc.
Search WWH ::




Custom Search