aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode/vm.h
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-24 15:42:01 +0200
committerBad Diode <bd@badd10de.dev>2021-10-24 15:42:01 +0200
commitdd5210368634e2b322435385eaaaccaa5125b5a9 (patch)
tree81c2bb47907281a82a198ed8cb28d9b7e34e7bf3 /src/bytecode/vm.h
parentd90b9f42a361bc3563b1f11bbd707c4288a65b40 (diff)
downloadbdl-dd5210368634e2b322435385eaaaccaa5125b5a9.tar.gz
bdl-dd5210368634e2b322435385eaaaccaa5125b5a9.zip
Add initial IF implementation
Diffstat (limited to 'src/bytecode/vm.h')
-rwxr-xr-xsrc/bytecode/vm.h10
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;