| Mnemonic | Opcode | Pseudo-Code | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Memory | |||||||||
| store address, rx | 110001 | *address = rx | |||||||
| storei rx, ry | 111101 | **rx = ry | |||||||
| load rx, address | 110000 | rx = *address | |||||||
| loadi rx, ry | 111100 | rx = **ry | |||||||
| loadn rx, #number | 111000 | rx = number | |||||||
| Move | |||||||||
| mov rx, ry | 110011 | rx = ry | |||||||
| mov rx, sp | 110011 | rx = sp | |||||||
| mov sp, rx | 110011 | sp = rx | |||||||
| Arithmetic | |||||||||
| add rx, ry, rz | 100000 | rx = ry + rz | |||||||
| addc rx, ry, rz | 100000 | rx = ry + rz + carry | |||||||
| sub rx, ry, rz | 100001 | rx = ry - rz | |||||||
| subc rx, ry, rz | 100001 | rx = ry - rz + carry | |||||||
| mul rx, ry, rz | 100010 | rx = ry * rz | |||||||
| mulc rx, ry, rz | 100010 | rx = ry * rz + carry | |||||||
| div rx, ry, rz | 100011 | rx = ry / rz | |||||||
| divc rx, ry, rz | 100011 | rx = ry / rz + carry | |||||||
| mod rx, ry, rz | 100101 | rx = ry % rz | |||||||
| inc rx | 100100 | rx++ | |||||||
| dec rx | 100100 | rx-- | |||||||
| Logic | |||||||||
| and rx, ry, rz | 010010 | rx = ry & rz | |||||||
| or rx, ry, rz | 010011 | rx = ry | rz | |||||||
| xor rx, ry, rz | 010100 | rx = ry ^ rz | |||||||
| not rx, ry | 010101 | rx = ~ry | |||||||
| rotl rx, #bits | 010000 | ||||||||
| rotr rx, #bits | 010000 | ||||||||
| shiftl0 rx, #bits | 010000 | rx = rx << bits | |||||||
| shiftl1 rx, #bits | 010000 | rx = rx << bits | (1 << bits - 1) | |||||||
| shiftr0 rx, #bits | 010000 | rx = rx >> bits | |||||||
| shiftr1 rx, #bits | 010000 | rx = rx >> bits | (0xFFFF >> bits << bits) | |||||||
| cmp rx, ry | 010110 | ||||||||
| IO | |||||||||
| inchar rx | 110101 | ||||||||
| outchar rx, ry | 110010 | ||||||||
| Jump | |||||||||
| jmp address | 000010 | ||||||||
| jeq address | 000010 | ||||||||
| jne address | 000010 | ||||||||
| jz address | 000010 | ||||||||
| jnz address | 000010 | ||||||||
| jc address | 000010 | ||||||||
| jnc address | 000010 | ||||||||
| jgr address | 000010 | ||||||||
| jle address | 000010 | ||||||||
| jeg address | 000010 | ||||||||
| jel address | 000010 | ||||||||
| jov address | 000010 | ||||||||
| jnov address | 000010 | ||||||||
| jn address | 000010 | ||||||||
| jdz address | 000010 | ||||||||
| Call | |||||||||
| call address | 000011 | address() | |||||||
| ceq address | 000011 | if (eq) address() | |||||||
| cne address | 000011 | if (ne) address() | |||||||
| cz address | 000011 | if (z) address() | |||||||
| cnz address | 000011 | if (nz) address() | |||||||
| cc address | 000011 | if (c) address() | |||||||
| cnc address | 000011 | if (nc) address() | |||||||
| cgr address | 000011 | if (gr) address() | |||||||
| cle address | 000011 | if (le) address() | |||||||
| ceg address | 000011 | if (eg) address() | |||||||
| cel address | 000011 | if (el) address() | |||||||
| cov address | 000011 | if (ov) address() | |||||||
| cnov address | 000011 | if (nov) address() | |||||||
| cn address | 000011 | if (n) address() | |||||||
| cdz address | 000011 | if (dz) address() | |||||||
| rts | 000100 | return | |||||||
| Stack | |||||||||
| push rx | 000101 | ||||||||
| push fr | 000101 | ||||||||
| pop rx | 000110 | ||||||||
| pop fr | 000110 | ||||||||
| Control | |||||||||
| clearc | 001000 | ||||||||
| setc | 001000 | ||||||||
| halt | 001111 | ||||||||
| nop | 000000 | ||||||||
| breakp | 001110 | ||||||||