Unterstütze Befehle

Alle unten aufgelisteten Befehle werden durch den Simulator unterstützt. Dabei werden folgende Abkürzungen verwendet:
Abkürzung Bedeutung
RD Zielregister
RS1 Quellregister 1
RS2 Quellregister 2
LA Label eines Sprungzieles
IM Immediate (Konstante)
PC Programmzeiger
RAM Arbeitsspeicher (Random Access Memory)

Speicher- und Ladebefehle

Befehl Parameter Operation Bedeutung
lw RD, Adresse RD := RAM[Adresse] Load Word
sw RS1, Adresse RAM[Adresse] := RS1 Save Word

Additions- und Subtraktionsbefehle

Befehl Parameter Operation Bedeutung
add RD, RS1, RS2 RD := RS1 + RS2 Addition mit Überlauf
addi RD, RS1, IM RD := RS1 + IM Addition Immediate mit Überlauf
addu RD, RS1, RS2 RD := RS1 + RS2 Addition ohne Überlauf
addiu RD, RS1, IM RD := RS1 + IM Addition Immediate ohne Überlauf
sub RD, RS1, RS2 RD := RS1 - RS2 Subtraktion mit Überlauf
subu RD, RS1, RS2 RD := RS1 - RS2 Subtraktion ohne Überlauf

Elementare logische Befehle

Befehl Parameter Operation Bedeutung
and RD, RS1, RS2 RD := RS1 AND RS2 and
andi RD, RS1, IM RD := RS1 AND IM and Immediate
nor RD, RS1, RS2 RD := RS1 NOR RS2 not or
or RD, RS1, RS2 RD := RS1 OR RS2 or
ori RD, RS1, IM RD := RS1 OR IM or Immediate
xor RD, RS1, RS2 RD := RS1 XOR RS2 exclusive or
xori RD, RS1, IM RD := RS1 XOR IM exclusive or Immediate

Vergleichsbefehle

Befehl Parameter Operation Bedeutung
sgt RD, RS1, RS2 RD := 1, wenn RS1 > RS2
RD := 0, sonst
set greater than
sgtu RD, RS1, RS2 RD := 1, wenn RS1 > RS2
RD := 0, sonst
set greater than unsigned
slt RD, RS1, RS2 RD := 1, wenn RS1 < RS2
RD := 0, sonst
set less than
sltu RD, RS1, RS2 RD := 1, wenn RS1 < RS2
RD := 0, sonst
set less than unsigned
slti RD, RS1, IM RD := 1, wenn RS1 < IM
RD := 0, sonst
set less than Immediate
sltui RD, RS1, IM RD := 1, wenn RS1 < IM
RD := 0, sonst
set less than unsigned Immediate

Schiebebefehle

Befehl Parameter Operation Bedeutung
sll RD, RS1, IM RD := RS1 << IM shift left logical
sllv RD, RS1, RS2 RD := RS1 << RS2 shift left logical variable
srl RD, RS1, IM RD := RS1 >> IM shift right logical
srlv RD, RS1, RS2 RD := RS1 >> RS2 shift right logical variable
sra RD, RS1, IM RD := RS1 ÷ 2IM shift right arithmetic
srav RD, RS1, RS2 RD := RS1 ÷ 2RS2 shift right arithmetic variable

Sprungbefehle

Befehl Parameter Operation Bedeutung
b LA PC := Adresse(LA) Branch
beq RS1, RS2, LA PC := Adresse(LA), falls RS1 = RS2 Branch if equal
beqz RS1, LA PC := Adresse(LA), falls RS1 = 0 Branch if equal zero
bne RS1, RS2, LA PC := Adresse(LA), falls RS1 ≠ RS2 Branch if not equal
bnez RS1, LA PC := Adresse(LA), falls RS1 ≠ 0 Branch if equal not zero
bgez RS1, LA PC := Adresse(LA), falls RS1 ≥ 0 Branch if greater or equal zero
bgtz RS1, LA PC := Adresse(LA), falls RS1 > 0 Branch if greater than zero
blez RS1, LA PC := Adresse(LA), falls RS1 ≤ 0 Branch if less or equal zero
bltz RS1, LA PC := Adresse(LA), falls RS1 < 0 Branch if less than zero
j LA PC := Adresse(LA) Jump