Die folgenden Befehle sind nicht optional, d.h. sie sind in jeder Implementierung der F-CPU vorhanden:
| add r3, r2, r1; | r1 = r2 + r3 |
| sub, mul, div; | ähnlich wie add |
| 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 |
or, orn, and, andn, xor, nxor, nor, nand; |
bitweise Verknüpfung zwischen r1 und r2, das Ergebnis wird in r3 gespeichert |
| load r2, r1; | r1 = mem[r2] |
| store r2, r1; | mem[r2] = r1 |
| 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 |
| 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. |