efdf7815e1
As requested by @ry755: https://github.com/fox32-arch/fox32/pull/2#issuecomment-1368289018
54 lines
1.4 KiB
Markdown
54 lines
1.4 KiB
Markdown
# 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
|