stage0 修复部分问题

This commit is contained in:
zzy committed 2026-09-14 16:01:33 +08:00
1 parent 5073c2b3ea
commit a1e684f6d4
3 files changed
+58 -44

No files matched your search

+8 -2
View File
@@ -328,6 +328,9 @@ static int spl_type_size(spl_vm_kind_t t) {
_r = _da OP _db; \
break; \
} \
case SPL_BOOL: \
_r = (uint8_t)_a OP(uint8_t) _b; \
break; \
default: \
_r = 0; \
break; \
@@ -1018,9 +1021,12 @@ int spl_vm_run_once(spl_vm_t *vm) {
case SPL_GADDR: {
spl_vm_val_t _idx = ins->imm;
if (_idx >= vec_size(prog->gdata))
if (_idx == 0 || _idx >= vec_size(prog->gdata))
VM_ERROR("GADDR: global data index out of range");
PUSH((spl_vm_val_t)(uintptr_t)vec_at(prog->gdata, _idx).data);
spl_vm_gdata_t *gd = &vec_at(prog->gdata, _idx);
if (!gd->data)
VM_ERROR("GADDR: null gdata entry");
PUSH((spl_vm_val_t)(uintptr_t)gd->data);
break;
}