diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-24 15:42:01 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-24 15:42:01 +0200 |
commit | dd5210368634e2b322435385eaaaccaa5125b5a9 (patch) | |
tree | 81c2bb47907281a82a198ed8cb28d9b7e34e7bf3 /src/bytecode/vm.h | |
parent | d90b9f42a361bc3563b1f11bbd707c4288a65b40 (diff) | |
download | bdl-dd5210368634e2b322435385eaaaccaa5125b5a9.tar.gz bdl-dd5210368634e2b322435385eaaaccaa5125b5a9.zip |
Add initial IF implementation
Diffstat (limited to 'src/bytecode/vm.h')
-rwxr-xr-x | src/bytecode/vm.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/bytecode/vm.h b/src/bytecode/vm.h index 51a6f44..b24a5fa 100755 --- a/src/bytecode/vm.h +++ b/src/bytecode/vm.h | |||
@@ -196,6 +196,16 @@ vm_interpret(VM *vm, Chunk *chunk) { | |||
196 | case OP_GREATER: { FIXNUM_COMPARE_OP(>); } break; | 196 | case OP_GREATER: { FIXNUM_COMPARE_OP(>); } break; |
197 | case OP_LESS_EQUAL: { FIXNUM_COMPARE_OP(<=); } break; | 197 | case OP_LESS_EQUAL: { FIXNUM_COMPARE_OP(<=); } break; |
198 | case OP_GREATER_EQUAL: { FIXNUM_COMPARE_OP(>=); } break; | 198 | case OP_GREATER_EQUAL: { FIXNUM_COMPARE_OP(>=); } break; |
199 | case OP_JUMP: { | ||
200 | ssize_t off = AS_FIXNUM(array_pop(vm->stack)); | ||
201 | vm->pc += off; | ||
202 | } break; | ||
203 | case OP_JUMP_IF_FALSE: { | ||
204 | ssize_t off = AS_FIXNUM(array_pop(vm->stack)); | ||
205 | if (IS_FALSE(array_pop(vm->stack))) { | ||
206 | vm->pc += off; | ||
207 | } | ||
208 | } break; | ||
199 | case OP_DISPLAY: { | 209 | case OP_DISPLAY: { |
200 | display(array_pop(vm->stack)); | 210 | display(array_pop(vm->stack)); |
201 | } break; | 211 | } break; |