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

+6 -5
View File
@@ -19,6 +19,7 @@ void spl_prog_init(spl_prog_t *prog) {
vec_init(prog->natives);
vec_init(prog->strtab);
vec_init(prog->gdata);
vec_push(prog->gdata, (spl_vm_gdata_t){0});
map_init(prog->symtab, MAP_HASH_STR, MAP_CMP_STR);
prog->debug = NULL;
}
@@ -296,7 +297,7 @@ int spl_prog_store_to_file(const char *fname, spl_prog_t *prog) {
ninsns = vec_size(prog->insns);
nnatives = vec_size(prog->natives);
nstrs = vec_size(prog->strtab);
ndata = vec_size(prog->gdata);
ndata = vec_size(prog->gdata) - 1; /* jump 0 node */
/* Calculate total size */
total = 8 /* magic */
@@ -325,7 +326,7 @@ int spl_prog_store_to_file(const char *fname, spl_prog_t *prog) {
}
/* gdata */
for (i = 0; i < ndata; i++) {
for (i = 1; i < vec_size(prog->gdata); i++) {
usize dsize = vec_at(prog->gdata, i).size;
total += 8 + ALIGN8(dsize); /* dsize + data(pad) */
}
@@ -398,7 +399,7 @@ int spl_prog_store_to_file(const char *fname, spl_prog_t *prog) {
}
/* ---- global data ---- */
for (i = 0; i < ndata; i++) {
for (i = 1; i <= ndata; i++) {
spl_vm_gdata_t *entry = &vec_at(prog->gdata, i);
pad = ALIGN8(entry->size) - entry->size;
wr64(&p, entry->size);
@@ -452,7 +453,7 @@ int spl_prog_add_data(spl_prog_t *prog, void *ptr, usize size) {
memcpy(entry.data, ptr, size);
entry.size = size;
vec_push(prog->gdata, entry);
return vec_size(prog->gdata);
return (int)(vec_size(prog->gdata) - 1);
}
spl_vm_func_t *spl_prog_get_func(spl_prog_t *prog, const char *name) {
@@ -528,4 +529,4 @@ void spl_vm_ins_dump(spl_vm_ins_t *ins, spl_vm_val_t addr) {
printf(" %s", spl_vm_type_kind_name((spl_vm_kind_t)ins->type));
printf(" %zd:%zx", ins->imm, ins->imm);
printf("\n");
}
}