Befehle der Hauptbefehlsgruppe :

Die folgenden Befehle sind nicht optional, d.h. sie sind in jeder Implementierung der F-CPU vorhanden:

Arithmetikbefehle

add r3, r2, r1; r1 = r2 + r3
sub, mul, div; ähnlich wie add

Shift- und Rotationsbefehle

shiftl r3, r2, r1; r1 = r2 << r3, schiebe nach links
shiftr r3, r2, r1; r1 = r2 >> r3, schiebe nach rechts
shiftra r3, r2, r1; ähnlich wie shiftr, das Vorzeichen bleibt jedoch erhalten
rotl r3, r2, r1; r1 = r2 <@ r3, rotiere nach links
rotr r3, r2, r1; r1 = r2 @> r3, rotiere nach rechts

Logikbefehle


or, orn, and, andn, xor, nxor, nor, nand;
bitweise Verknüpfung zwischen r1 und r2, das Ergebnis wird in r3 gespeichert

Speicherbefehle

load r2, r1; r1 = mem[r2]
store r2, r1; mem[r2] = r1

Datenverschiebebefehle

move r3, r2, r1; if r3 == 0 then r1 = r2
loadcons.n Imm16,r1; Imm16 wird um ein n-Vielfaches von 16 verschoben und dann in r1 geschrieben
loadconsx.n Imm16,r1; ähnlich wie loadcons, aber unter Berücksichtigung des Vorzeichens
get r2, r1; r1 = SPR(r2), Inhalt des Registers, auf das r2 zeigt, wird in r1 geschrieben
put r2, r1; SPR(r2) = r1, Inhalt von r1 wird in das Register gespeichert, auf das r2 zeigt

Ablaufsteuerungsbefehle

jmpa r3, r2, r1; if (negation XOR true (condition,r3)) then r1 = PC, PC = r2
loadaddr r2, r1; r1 = PC + 4 + r2
loopentry r1; r1 = PC + 4, Spezialfall von loadaddr ohne Offset, sollte vor einem Sprung in eine Schleife verwendet werden und mit jmpa kombiniert werden
loadaddri Imm16, r1; r1 = PC + 4 + Imm16
loop r2, r1; r1 = r1 - 1; if r1 != 0 then PC = r2
syscall Imm16, r1; Supervisormodus wird eingeschaltet und die Systemroutine Nr Imm16 wird ausgeführt. r1 wird zur Zeit nicht benutzt.
halt; hält die CPU an, bis eine Exception auftritt (wie ein sched_yield())
rfe; beendet eine Exceptionbehandlung z.B. einen Interrupt. Die vorhergehende Arbeit wird wieder aufgenommen.

 

zurück zur Startseite