Hardware Reference
In-Depth Information
Befehle fur ganzzahlige Operationen, deren Funktion sich aus dem Namen
erschließt: ADD , SUB , MUL und DIV .Ferner SL (shift left) und SR (shift
right). Bei diesen Befehlen kann der dritte Operand ein Direktoperand
sein ( ADD $X,$Y,$Z oder ADD $X,$Y,Z ). All diese Befehle arbeiten mit
vorzeichenbehafteten Werten. Von allen gibt es auch eine vorzeichenlose
Variante. Dem Befehlsnamen wird dafur der Buchstabe U (fur unsigned“)
vorangestellt: ADDU , SRU etc. Diese Befehle signalisieren keine Uberlaufe.
Der Befehl NEG $X,Y,$Z berechnet $X Y $Z .Esistdereinzige,beidem
der Direktoperand als zweiter Operand geschrieben wird. In der Kurz-
schreibweise NEG $X,$Z berechnet er das Zweikomplement von $Z .
Befehle fur bitweise logische Operationen AND , OR , XOR , NOR , NAND , ANDN ,
ORN und NXOR .
Befehle fur Vergleiche: CMP $X,$Y,$Z vergleicht die Werte in $Y und $Z
und schreibt in $X den Wert 0,
1oder1abhangig davon, ob $Y gleich,
kleiner oder großer ist als $Z .
Befehle fur den Speicherzugriff: LDO $X,$Y,$Z ladt ein Octabyte aus dem
Speicher von der effektiven Adresse $Y + $Z in das Register $X . Umgekehrt
schreibt STO $X,$Y,$Z den Wert aus Register $X in den Speicher. Die
Befehlspaare LDB / STB , LDW / STW und LDT / STT dienen dem Zugriff auf 1-
, 2- und 4-Byte große Werte im Speicher. Speicherzugriff erfolgt immer
ausgerichtet an durch 1, 2, 4 oder 8 teilbare Adressen.
Befehle fur Operationen mit 64-Bit-Gelitkommazahlen FADD , FSUB , FMUL ,
FDIV , FREM FSQRT und FCMP .Mit FLOT $X,$Z wird der ganzzahlige Wert
aus $Z in einen Gleitkommawert gewandelt. Der umgekehrte Weg funk-
tioniert mit FIX $X,$Z .
Mit dem Befehl GET $X,r n wird der Inhalt des angegebenen Spezialregisters
in Register $X geschrieben und mit PUT r n , $X ein Wert in das Spezialregister
ubertragen.
MMIX kennt einen unbedingten Sprung JMP ziel , der zum angegebenen Ziel
springt. Die Zieladresse wird im Befehlswort relativ zum aktuellen Programm-
zahler angegeben. Ferner gibt es bedingte Sprunge fur unterschiedliche Be-
dingungen - jeweils auch in der Version Probable Branch“ (siehe Kapitel 6):
BZ $X,ziel springt nur dann zur Zieladresse, wenn der Wert in Register $X
0 ist (Branch if Zero). Daneben gibt es die Befehle BP (positiv), BN (negativ),
BEV (gerade), BOD (ungerade), BNN (nicht-negativ), BNP (nicht-positiv) und
BNZ (nicht-Null).
Der Assembler mmixal kennt so genannte lokale Labels (Sprungmarken),
die im Gegensatz zu anderen Labels wieder verwendet werden konnen. Die
Sprungmarke wird durch 1H (1 Here) angegeben. Verzweigt wird allerdings
Search WWH ::




Custom Search