26 lines
565 B
Markdown
26 lines
565 B
Markdown
|
|
||
|
Temporary documentation, definitely incorrect as of now
|
||
|
|
||
|
VM specifications
|
||
|
|
||
|
Memory:
|
||
|
- 64k
|
||
|
- endianness: whatever's the architecture this baby runs on (little?)
|
||
|
|
||
|
Registers:
|
||
|
- pc
|
||
|
- lr
|
||
|
- sp
|
||
|
|
||
|
Operations: fixed width architecture where each instruction is 3-bytes long because I'm wasteful, it's easier to en/decode, and also fuck you
|
||
|
- st1, st2 (from ToS)
|
||
|
- push1, push2
|
||
|
- pop1, pop2
|
||
|
- pushi, popi (push/pop immediate value)
|
||
|
- add, sub, and, or, not, (maybe xor)
|
||
|
- jmp
|
||
|
- beq, bne, blt (ToS ==/!=/< mem[operands])
|
||
|
|
||
|
use assert()s to make sure pc, sp, etc... are valid
|
||
|
|