stage1 重构代码

This commit is contained in:
zzy
2026-07-20 12:10:55 +08:00
parent ab63c8ed90
commit 21f35b30fa
14 changed files with 1963 additions and 1539 deletions

View File

@@ -54,7 +54,7 @@ int main(int argc, const char **argv) {
spl_ins_t *ins = &vec_at(prog.insns, i);
printf("%4zd: %s", i, spl_opcode_name((spl_opcode_t)ins->opcode));
if (ins->type != SPL_VOID)
printf(" %s", spl_type_name((spl_type_t)ins->type));
printf(" %s", spl_type_tag_name((spl_type_t)ins->type));
printf(" %zd", ins->imm);
/* annotate jumps / calls */

View File

@@ -443,7 +443,7 @@ const char *opcode_name[] = {
#undef X
};
const char *spl_opcode_name(spl_opcode_t opcode) { return opcode_name[opcode]; }
const char *spl_type_name(spl_type_t type) {
const char *spl_type_tag_name(spl_type_t type) {
switch (type) {
case SPL_VOID:
return "void";
@@ -481,7 +481,7 @@ const char *spl_type_name(spl_type_t type) {
void spl_ins_dump(spl_ins_t *ins, spl_val_t addr) {
printf("%4zu: %s", addr, spl_opcode_name((spl_opcode_t)ins->opcode));
if (ins->type != SPL_VOID)
printf(" %s", spl_type_name((spl_type_t)ins->type));
printf(" %s", spl_type_tag_name((spl_type_t)ins->type));
printf(" %zd:%zx", ins->imm, ins->imm);
printf("\n");
}

View File

@@ -216,7 +216,7 @@ int spl_prog_add_str(spl_prog_t *prog, const char *str);
/* Opcode name lookup for debugging/dumping */
const char *spl_opcode_name(spl_opcode_t opcode);
const char *spl_type_name(spl_type_t type);
const char *spl_type_tag_name(spl_type_t type);
void spl_ins_dump(spl_ins_t *ins, spl_val_t addr);

View File

@@ -665,7 +665,7 @@ int spl_vm_run_once(spl_vm_t *vm) {
if (vm->trace) {
fprintf(stderr, "vm: ip=%zd op=%s type=%s imm=%zu sp=%zd fp=%zd\n", vm->ip - 1,
spl_opcode_name(ins->opcode), spl_type_name(ins->type), ins->imm, vm->sp, vm->fp);
spl_opcode_name(ins->opcode), spl_type_tag_name(ins->type), ins->imm, vm->sp, vm->fp);
}
switch (ins->opcode) {
@@ -1084,7 +1084,7 @@ void spl_vm_dump_instr(spl_vm_t *vm, spl_val_t ip) {
return;
spl_ins_t *ins = &vec_at(vm->prog->insns, ip);
fprintf(stderr, " instr at ip=%zd: op=%s type=%s imm=%zu\n", ip, spl_opcode_name(ins->opcode),
spl_type_name(ins->type), ins->imm);
spl_type_tag_name(ins->type), ins->imm);
}
void spl_vm_stackdump(spl_vm_t *vm, spl_val_t sp) {