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