Arithmetisch er Shift = Mit vorzeichen
Shift (*2): x = x+x , schiebt eine 0 von rechts rein
Framepointer um sich zu spaaren alles vom stack runter zu nehmen
Bis zum Framepointer vom caler
ab dem fraimpointer vom callee
jal = „jump and load“ … speichert die addresse des nächsten befehls in $ra
Mips hat 2 Coprozessoren
Interrupt = asynchron
exception = synchron
Zeigt auf die nächste freie Adresse (ja normalerweise nicht, aber WTF).
Achtung, genau verdreht als Name vermuten lässt
Großes Ende ⇒ LSB am Ende
Nachteil: Verschieben der Bits wenn Zahl kleiner als Speicherzelle (z.B. Byte in Word speichern)
Kleines Ende ⇒ MSB am Ende
Auffüllen Wenn Zahl Keiner Speicherplatz je nach Vorzeichen!
Assembler Sprache von MIPS
.word
32 Bit.half
16 Bit.byte
8 Bit.ascii
Text.asciiz
Text + \0.space 42
(Freier platz für 42 Byte).text
Code ab hier.data
Daten ab hier''.word 1 2 3 0x42'' ''.asciiz "Hallo Welt"'' ''.word label1 label2 label3'' (Sprungtabelle)
Zielregister zuerst
[label] [+] [imm] [(register)]
*u = Unsigned ⇒ Auffüllen mit 0
sonst ⇒ Auffüllen mit 0/1 je nach vorzeichen
z.B. lb und lbu
„with overflow“ erzeugt ggf. interrupt
syscall: Nummer in $v0
t*
)jal
sp
setzenfp
, ra
, s*
)fp
setzens*
, ra
, fp
)sp
rücksetzenjr $ra
t*
)Sowas wird ABI genant.