computed goto now works; some progress on the new VM

This commit is contained in:
Araq 2013-10-25 13:30:34 +02:00
commit 6ea538cec3
5 changed files with 53 additions and 23 deletions

View file

@ -1,16 +1,16 @@
discard """
output: '''yeah A
yeah A
yeah CD
yeah CD
yeah A
yeah CD
yeah CD
yeah A
yeah B
yeah A
yeah A
yeah A'''
output: '''yeah A enumB
yeah A enumB
yeah CD enumD
yeah CD enumE
yeah A enumB
yeah CD enumE
yeah CD enumD
yeah A enumB
yeah B enumC
yeah A enumB
yeah A enumB
yeah A enumB'''
"""
type
@ -32,13 +32,14 @@ proc vm() =
while true:
{.computedGoto.}
let instr = instructions[pc]
let ra = instr.succ # instr.regA
case instr
of enumA:
echo "yeah A"
echo "yeah A ", ra
of enumC, enumD:
echo "yeah CD"
echo "yeah CD ", ra
of enumB:
echo "yeah B"
echo "yeah B ", ra
of enumE:
break
inc(pc)