aboutsummaryrefslogtreecommitdiff
path: root/src/fvm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fvm.c')
-rw-r--r--src/fvm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/fvm.c b/src/fvm.c
index 3a5a4e2..1384e92 100644
--- a/src/fvm.c
+++ b/src/fvm.c
@@ -340,8 +340,12 @@ int64_t fvm_execute(struct fvm *vm) {
a = fvm_pop(vm);
fvm_push(vm, vm->pc + 1);
vm->pc = a;
+ fvm_push(vm, vm->bp);
+ vm->bp = vm->sp;
break;
case FVM_OP_RET:
+ vm->sp = vm->bp;
+ vm->bp = fvm_pop(vm);
a = fvm_pop(vm);
vm->pc = a;
break;