| BITS | 0-3 | 4-7 | 8-11 | 12-15 |
|---|---|---|---|---|
| S-FORM | OP | RD | RX | RY |
| I-FORM | OP | RD | IMM | |
Here are SPANKy's instructions, with opcode bit encoding, assembly mnemonic,
and semantics (in C-like syntax):
| BITS | MNEMONIC | FORM | SEMANTICS |
|---|---|---|---|
| 0000 | AND | S | RD = RX & RY |
| 0001 | ANDi | I | RD &= IMM |
| 0010 | OR | S | RD = RX | RY |
| 0011 | ORi | I | RD |= IMM |
| 0100 | NOT | S | RD = !RX |
| 0101 | NOTi | I | RD = !IMM |
| 0110 | ROTL | S | RD = RY << RX |
| 0111 | ROTLi | I | RD <<= IMM |
| 1000 | ADD | S | RD = RX + RY |
| 1001 | ADDi | I | RD += IMM |
| 1010 | LD | S | RD = MEM(RX) |
| 1011 | LDi | I | RD = MEM(IMM) |
| 1100 | ST | S | MEM(RX) = RD |
| 1101 | STi | I | MEM(IMM) = RD |
| 1110 | BZ | I | PC = IMM if (RD == 0) |
| 1111 | HALT | I | SPANKy stops. |
SPANKy also provides a few useful pseudo-ops for your chewing enjoyment:
| PSEUDO-OP | IMPLEMENTATION |
|---|---|
| NOP | AND R0,R0,R0 |
| CLR RX | ANDi RX,0 |
| MOV RD,RS | OR RD,RS,RS |
| SET RX,IMM | CLR RX ORi RX,IMM |
| SUB RD,RX,RY | NOT RY,RY ADDi RY,1 ADD RD,RX,RY |