From dd5210368634e2b322435385eaaaccaa5125b5a9 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Sun, 24 Oct 2021 15:42:01 +0200 Subject: Add initial IF implementation --- src/bytecode/vm.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/bytecode/vm.h') 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) { case OP_GREATER: { FIXNUM_COMPARE_OP(>); } break; case OP_LESS_EQUAL: { FIXNUM_COMPARE_OP(<=); } break; case OP_GREATER_EQUAL: { FIXNUM_COMPARE_OP(>=); } break; + case OP_JUMP: { + ssize_t off = AS_FIXNUM(array_pop(vm->stack)); + vm->pc += off; + } break; + case OP_JUMP_IF_FALSE: { + ssize_t off = AS_FIXNUM(array_pop(vm->stack)); + if (IS_FALSE(array_pop(vm->stack))) { + vm->pc += off; + } + } break; case OP_DISPLAY: { display(array_pop(vm->stack)); } break; -- cgit v1.2.1