diff options
| author | iamcheeseman <[email protected]> | 2026-04-14 21:15:38 -0400 |
|---|---|---|
| committer | iamcheeseman <[email protected]> | 2026-04-14 21:15:38 -0400 |
| commit | 7752d0b775c4df0de6fec688107e904ad20e1de6 (patch) | |
| tree | 4255de168db8a527b7e99217021dd052bd2024e2 /uscript/vm.c | |
| parent | a2ebe62cdbbe12e75e3b5c79de3dce9fbeb1ca20 (diff) | |
microengine: compound operators
Diffstat (limited to 'uscript/vm.c')
| -rw-r--r-- | uscript/vm.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/uscript/vm.c b/uscript/vm.c index 4064e12..9fbd8c0 100644 --- a/uscript/vm.c +++ b/uscript/vm.c @@ -245,20 +245,26 @@ void us_exec(struct us_func *func) vm_push(vm.cf->stackbot[read_byte()]); break; case BC_SET_LOCAL: - vm.cf->stackbot[read_byte()] = vm_peek(); + vm.cf->stackbot[read_byte()] = vm_peek(0); break; case BC_GET_GLOBAL: vm_push(get_global(read_short())); break; case BC_SET_GLOBAL: - set_global(read_short(), vm_peek()); + set_global(read_short(), vm_peek(0)); break; case BC_GET_UPVAL: vm_push(*func->upvals[read_byte()]->loc); break; case BC_SET_UPVAL: - *func->upvals[read_byte()]->loc = vm_peek(); + *func->upvals[read_byte()]->loc = vm_peek(0); break; + case BC_PUSH_INDEX: { + struct us_val idx_val = vm_peek(0); + struct us_val idxee_val = vm_peek(1); + index_val(idx_val, idxee_val); + break; + } case BC_GET_INDEX: { struct us_val idx_val = vm_pop(); struct us_val idxee_val = vm_pop(); @@ -403,7 +409,7 @@ void us_exec(struct us_func *func) } case BC_FALSEY_JMP: { u16 jmp = read_short(); - if (as_bool(vm_peek())) + if (as_bool(vm_peek(0))) break; i += jmp; break; |
