stack-machine/doc/opcode-table.txt

54 lines
2.6 KiB
Plaintext

opcode | mnem. | SP | RP | T | N | R | PC |cycles
---------|-----------|------|--------|-------|--------|--------|--------|------
0000000X | NOP | SP | RETURN | T | N | RETURN | RETURN | 1
0000001X | RSHIFT | SP-1 | RETURN | expr. | [SP-1] | RETURN | RETURN | 1
0000010X | ADD | SP-1 | RETURN | expr. | [SP-1] | RETURN | RETURN | 1
0000011X | SUB | SP-1 | RETURN | expr. | [SP-1] | RETURN | RETURN | 1
00001XXX | LOGIC | SP-1 | RETURN | expr. | [SP-1] | RETURN | RETURN | 1
0001000X | SWAP | SP | RETURN | N | T | RETURN | RETURN | 1
0001001X | DUP | SP+1 | RETURN | T | T | RETURN | RETURN | 1
00010100 | OVER | SP+1 | RP | N | T | R | PC+1 | 1
00010101 | RDUP | SP | RP+1 | T | N | R | PC+1 | 1
00010110 | NLZ | SP | RP | expr. | N | R | PC+1 | 1
00010111 | MULT | SP | RP | expr. | expr. | R | PC+1 | 2
0001100X | LOAD | SP | RP | expr. | N | R | PC+1 | 1*
0001101X | STORE | SP-2 | RP | expr. | [SP-2] | R | PC+1 | 1*
00011100 | RDROP | SP | RP-1 | T | N | [RP-1] | PC+1 | 1
00011101 | POP | SP+1 | RP-1 | R | T | [RP-1] | PC+1 | 1
00011110 | PUSHPC | SP | RP+1 | T | N | PC+1 | PC+1 | 1
00011111 | PUSH | SP-1 | RP+1 | N | [SP-1] | T | PC+1 | 1
001XXXXX | IMMED | SP+1 | RP | expr. | T | R | PC+1 | 1
010XXXX0 | JUMP | SP-1 | RP | N | [SP-1] | R | TARGET | 1*
010XXXX1 | JUMP DROP | SP-2 | RP | expr. | [SP-2] | R | TARGET | 1*
011XXXX0 | CALL | SP-1 | CALL | N | [SP-1] | CALL | TARGET | 1*
011XXXX1 | CALL DROP | SP-2 | CALL | expr. | [SP-2] | CALL | TARGET | 1*
1XXXXXXX | MERGE | SP | RP | expr. | N | R | PC+1 | 1
RP:RETURN = opcode[0] ? (RP-1) : RP
R:RETURN = opcode[0] ? [RP-1] : R
PC:RETURN = opcode[0] ? R : (PC+1)
RP:CALL = cond(N) ? (RP+1) : RP
R:CALL = cond(N) ? (PC+1) : R
PC:TARGET = cond(N) ? (rel ? (PC+1+T) : T) : (PC+1)
(*) External device can insert additional wait states.
opcode | T:expr. | N:expr. |
-------|---------|----------|
RSHIFT | N >> T | --- |
ADD | N + T | --- |
SUB | N - T | --- |
NIP | T | --- |
AND | N & T | --- |
OR | N | T | --- |
XOR | N ^ T | --- |
NLZ | nlz(T) | --- |
MULT | msw <- N*T -> lsw |
LOAD | data in | --- |
STORE | [SP-1] | --- |
IMMED | immed | --- |
J DROP | [SP-1] | --- |
C DROP | [SP-1] | --- |
MERGE | T:merge | --- |