Fox32 instructions
This file describes every fox32 instruction in detail. For a general
description of the fox32 CPU, see cpu.md.
NOP: no operation
ADD: add
MUL: multiply (unsigned)
AND: bitwise AND
SLA: shift left
SRA: shift right
arithmetic (with sign extension)
BSE: bit set
CMP: compare
JMP: absolute jump
RJMP: relative jump
PUSH: push value to stack
IN: get input from I/O bus
ISE: set interrupt enable
flag
MSE: set MMU enable flag
HALT: halt CPU
INC: increment (add 1)
OR: bitwise OR
IMUL: multiply (signed)
SRL: shift right
logical (with zero extension)
BCL: bit clear
MOV: move value
CALL: absolute call
RCALL: relative call
POP: pop value from stack
OUT: output on I/O bus
ICL: clear interrupt enable
flag
MCL: clear MMU enable flag
BRK: debug breakpoint
SUB: subtract
DIV: divide (unsigned)
XOR: bitwise XOR
ROL: rotate left
ROR: rotate right
BTS: test if bit set
MOVZ:
move value and clear upper bits in target register
LOOP: absolute loop
RLOOP: relative loop
RET: return from function
INT: raise interrupt
TLB: flush TLB and
set page directory pointer
DEC: decrement (subtract 1)
REM: calculate
remainder of division (unsigned)
NOT: bitwise NOT
IDIV: divide (signed)
IREM: remainder (signed)
RTA:
calculate address relative to instruction pointer
RETI: return from interrupt
FLP: flush page from TLB