PC | Address | Memory |
---|
Data Stack |
---|
Return Stack |
---|
Symbol | Description |
---|---|
LIT | ds.push(oper) pc = pc + 2 |
LOAD (@) | addr = ds.pop() ds.push(mem[addr]) pc = pc + 1 |
STORE (!) | addr = ds.pop() mem[addr] = ds.pop() pc = pc + 1 |
DROP | ds.pop() pc = pc + 1 |
DUP | ds.push(ds.peek()) pc = pc + 1 |
OVER | ds.push(ds.nextToPeek()) pc = pc + 1 |
SWAP | tmpl = ds.pop() tmp2 = ds.pop() ds.push(tmpl) ds.push(tmp2) pc = pc + 1 |
ADD (+) SUB (-) AND OR XOR |
tmp2 = ds.pop() tmpl = ds.pop() ds.push(tmpl op tmp2) pc = pc + 1 |
IF | tmp = ds.pop() if tmp = 0 then pc = oper else pc = pc + 2 |
CALL | pc = oper rs.push(pc + 2) |
EXIT | pc = rs.pop() |
HALT | stop cpu |
>R | rs.push(ds.pop()) pc = pc + 1 |
R> | ds.push(rs.pop()) pc = pc + 1 |