diff options
author | Bad Diode <bd@badd10de.dev> | 2024-07-04 20:45:27 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2024-07-04 20:45:27 +0200 |
commit | 1ea4d6f2aab4157dbe7da328b11ef6bb0a1fc5a0 (patch) | |
tree | b66d3ca5237426a100dc8688e2aefee82ef21723 /src/vm.c | |
parent | 81aca08fa680c8747ad3afff0594c4e8830b0ec8 (diff) | |
download | bdl-1ea4d6f2aab4157dbe7da328b11ef6bb0a1fc5a0.tar.gz bdl-1ea4d6f2aab4157dbe7da328b11ef6bb0a1fc5a0.zip |
Add storage of Str values on locals/globals
Diffstat (limited to 'src/vm.c')
-rw-r--r-- | src/vm.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -196,8 +196,14 @@ vm_run(VM *vm) { | |||
196 | Variable var = vm->chunk->vars[src]; | 196 | Variable var = vm->chunk->vars[src]; |
197 | vm->regs[dst].i = (ptrsize)&vm->fp[var.offset / 8]; | 197 | vm->regs[dst].i = (ptrsize)&vm->fp[var.offset / 8]; |
198 | } break; | 198 | } break; |
199 | case OP_LDSTR: { | ||
200 | u8 dst = instruction.dst; | ||
201 | u8 src = instruction.a; | ||
202 | Str *str = &vm->chunk->strings[src]; | ||
203 | vm->regs[dst].ptr = (ptrsize)str; | ||
204 | } break; | ||
199 | case OP_ST64I: { | 205 | case OP_ST64I: { |
200 | sz value = vm->regs[instruction.dst].i; | 206 | sz value = vm->regs[instruction.dst].ptr; |
201 | s64 *addr = (s64 *)vm->regs[instruction.a].ptr; | 207 | s64 *addr = (s64 *)vm->regs[instruction.a].ptr; |
202 | sz offset = vm->chunk->constants[instruction.b].i; | 208 | sz offset = vm->chunk->constants[instruction.b].i; |
203 | addr[offset] = value; | 209 | addr[offset] = value; |
@@ -293,6 +299,11 @@ vm_run(VM *vm) { | |||
293 | } break; | 299 | } break; |
294 | case OP_PRINTSTR: { | 300 | case OP_PRINTSTR: { |
295 | u8 idx = instruction.dst; | 301 | u8 idx = instruction.dst; |
302 | Str *string = (Str*)vm->regs[idx].ptr; | ||
303 | print("%s", *string); | ||
304 | } break; | ||
305 | case OP_PRINTSTRI: { | ||
306 | u8 idx = instruction.dst; | ||
296 | Str string = vm->chunk->strings[idx]; | 307 | Str string = vm->chunk->strings[idx]; |
297 | print("%s", string); | 308 | print("%s", string); |
298 | } break; | 309 | } break; |