diff options
author | Araq <rumpf_a@web.de> | 2013-07-26 12:17:36 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-07-26 12:17:36 +0200 |
commit | 698eac2a94f9b2ef687735cf3e49d93e7cdb2121 (patch) | |
tree | c38ba8e6e037b0597d9b2578d4c1baf4b4480d00 /compiler/vm.nim | |
parent | 05108cf81c3758ce8fbe9026470de296c9b264a1 (diff) | |
download | Nim-698eac2a94f9b2ef687735cf3e49d93e7cdb2121.tar.gz |
new vm: can execute simple programs
Diffstat (limited to 'compiler/vm.nim')
-rw-r--r-- | compiler/vm.nim | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim index 5f10c4e2c..7ae5b7878 100644 --- a/compiler/vm.nim +++ b/compiler/vm.nim @@ -81,7 +81,7 @@ template decodeBx(k: expr) {.immediate, dirty.} = proc compile(c: PCtx, s: PSym): int = result = vmgen.genProc(c, s) - c.echoCode + #c.echoCode proc myreset(n: PNode) = when defined(system.reset): @@ -183,7 +183,7 @@ proc execute(c: PCtx, start: int) = {.interpreterLoop.} let instr = c.code[pc] let ra = instr.regA - echo "PC ", pc, " ", c.code[pc].opcode, " ra ", ra + #echo "PC ", pc, " ", c.code[pc].opcode, " ra ", ra case instr.opcode of opcEof: break of opcRet: @@ -462,7 +462,8 @@ proc execute(c: PCtx, start: int) = newFrame.slots[i] = newNode(nkEmpty) tos = newFrame move(regs, newFrame.slots) - pc = newPc + # -1 for the following 'inc pc' + pc = newPc-1 of opcTJmp: # jump Bx if A != 0 let rbx = instr.regBx - wordExcess - 1 # -1 for the following 'inc pc' |