/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-03/fsm-2021-06-28/mips.txt


MIPS-Architektur

lb, lbu     Laden eines Bytes
sb          Speichern eines Bytes
lh, lhu     Laden eine Halbwortes
sh          Speichern eines Halbwortes
lw          Laden eines Wortes
sw          Speicher eines Wortes
ld*         Laden eines Doppelwortes
sd*         Speichern eines Doppelwortes
la*         Laden einer Addresse
li*         Laden eines immidiate Wertes
l.s*, l.d*  Laden eines Gleitkommaregisters
s.s*, s.d*  Speichern eines Gleitkommaregisters
move*       Transfer zwischen Universalregistern
mov.s*      Transfer zwischen Gleitkommaregistern
mov.d*
mfhi        Transfer zwischen Universalregister und den Regiestern Hi und Lo
mflo
mthi
mtlo
mfc1        Transfer zwischen Universalregistern und Gleitkommaregistern
mtc1

addi        Addition
addi
addu
addiu
sub         Subtration
sub
mult        Multiplikation
multu
div         Division
divu
abs*        Absoluter Wert 
neg*        Negation
rem*        Modulo
not*        Logisches NOT
and         Logisches UND
andi
or          Logisches OR
ori
xor         Logisches XOR
xori        
nor         Logisches NOR
sll         Logisches Linksschieben 
sllv
srl         Logischse Rechtsschieben
srlv
sra         Arithmetische Rechtsverschiebung
srav
rol*        Rotation links 
ror*        Rotation rechts
slt         Vergleich kleiner
slti
sltu        
stliu
seq*        Vergleich gleich 
sne*        Vergleich ungleich
sgt*        Vergleich groesser
sgtu*
sge*        Vergleich groeser gleich
sgeu*
sle*        Vergleich kleiner gleich
sleu*

j,          unbedingter Sprung 
b*
jr
jal*        Jump mit Speicherung PC+4
jalr        Jump Regeister
beq         Verzweigung falls gleich
bne         Verzweigung falls ungleich 
beqz*       Verzweigung falls gleich 
bnez*       Verzweigung falls gleich
bgt*        Verzweigung falls groesser
bge*        Verzweigung falls groesser gleich 
bgtz        Verzweigung fals groesser 
bgez        Verzweigung falls groesser gleich
blt*        Verzweigung falls kleiner
ble*        Verzweigung falls kleiner gleich 
bltz        Verzweigung falls kleiner
blez        Verzweigung falls kleiner gleich 
nop         Nulloperation, leere Anweisung
bge*

Befehlssatz = Instruction Set

Befehlsarten:
1. Datenbewegungsbefehle (Data Movement)
2. Arithmetisch-Logische Befehle (Integer Arithmeic and Logical)
3. Schiebe- und Rotationsbefehle (Shift, Rotate)
4. Multimediabefehle
5. Gleitkommabefehle (Floating-Point Instructions)
6. Programmsteuerbefehle (Control Transfer Instructions)
7. Systemsteuerbefehle (System Control Instructions)
8. Synchronisationsbefehle 

Gleitkommabefehle (Floating-Point Instructions)
1. Bitfeldorientierte Multimediabefehle
2. Graphikorientierte Multimediabefehle

Datenbewegungsbefehle, auch: push, pop

Saturationsarithmetik: Zahlenüberschreitungen werden auf die höchstwertigste bzw. niederwertigste Zahl abgebildet

Befehlsformate: 

Opcode 

Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat

Lade/- und Speicherarchitektur (Load/Store Architecture)
Register-Speicher-Architektur
Speicher-Speicher-Architektur 
Akkumalatoren-Architekturen 
Stack- und Kellerarchitektur 

Stackarchiktur: 8087, Intel
ATAM862 Atmel

Addressierungsarten:

Register und Unmittelbare Addressierungsarten
Klasse des Einstufigen Addressierung 
Klasse der zweistufigen Addressierung 

Datenaddressierung
Registeraddressierung
Unmittelbare Addressierung
Direkte oder absolute Addressierung
Registerindirekte ADdressierung 
Registeraddressiernug mit Autoinkrement/Dekrement
Präinkrement, Postinkrement
Prädekrement, Postdekrement

Registerindirekte Addressierung mit Verschiebung (Displacement)

Indizierte Addressierung 

Indizierte Addressierung mit Verschiebung

Befehlsaddressierung 

Befehlsrelativer Modus 

Befehlszählerindirekt

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

- Big-Endian-Format
- Little-Endian-Format

- Datenformate

1. Einzelbit
2. Ganzzahl (Integer)
3. Gleitkomma 
4. Multimedia 

Ganzzahldatenformate:

- signed
- unsigned 
- packed
- unpacked
- BCD-Zahlen (Binary Coded Decimals)
- ASCII

Bate
Halbwort 
Wort
Doppelwort 

Gleitkommadatenformate (IEEE-754-Standard)

Einfache Genauigkeit: 32 Bit 
Doppelte Genauigkeit: 64 Bit 
Erweiterte Genauigkeit: 80 Bit 

f = (-1)^s * 1.m*2^(e-b)

biased - verschoben 
b bias 
m Mantissenanteil 

b = 2^{ne-1}-1

p = 23, einfache
p = 52, doppelte 
p = 63, erweiterte 

Multimediaformate: 64 Bit breite Wörter

Bitfeldorientierte
Graphikorientierte

Befehlssatz 

Datenbwegungsbefehle (Data Movement)
Arithmetisch-Logische-Befehle 
Schiebe- und Rotationsbefehle 
Multmediabefehle
Gleitkommabefehle
Programmsteuerbefehle
Systemsteuerbefehle
Synchronisationsbefehle

SWAP, TAS 

Befehlsformate (instruction format)

Dreiaddressformat (3-Address Instruction Format), zwei Quelloperanden, ein Zieloperand
Zweiaddressformat 
Einaddressformat 
Nulladdressformat

Lade-/Speicherarchitektur (Load/Store Architecture)
Register-Register-Architektur
Register-Speicher-Architektur
Speicher-Speicher-Architektur
Akkumalatorarchitektur
Stack- oder Kellerarchitektur

Addressierungsart 
Effektive Addresse 

Effektive Addresse
Virtuelle Addresse
Physikalische Addresse

Datenaddressierungsarten 

Registeraddressierung 
Unmittelbare Addressierung 
Direkte oder absolute Addressierung 
Registerindirekte Addressierung 
Registerindirekte Addressierung mit Autoinkrement/Autodekrement
Präinkrement, Postinkrement, Prädekrement, Postdekrement
Registerindirekte Addressierung mit Verschiebung (Displacement)
Indizierte Addressierung 
Indizierte Addressierung mit Verschiebung 

Befehlsaddressierungsarten
Befehlsrelativer Modus
Befehlsindirekter Modus

MIS Register

$0 bis $31

$0          $zero       0 (read-only)
$1          $at         reserviert für den Assembler
$2 - $3     $v0 - $v1   Rückgabewert von Funktionsaufrufen
$4 - $7     $a0 - $a3   Argumente für den Funktionsauf 
$8 - $15    $t0 - $t7   Temporäre Variablen
$16 - $23   $s0 - $s7   Gesicherte Variablen 
$24 - $25   $t8 - $t9   Temporäre Variablen 
$26 - $27   $k0 - $k1   Reserviert für das Betriebssystem 
$28         $gp         Data Segment Pointer 
$29         $sp         Stack Pointer
$30         $fp         Frame Pointer
$31         $ra         Return Address