stage0 重命名字段 修复windows函数没有进入宏包装

This commit is contained in:
zzy
2026-08-14 20:41:09 +08:00
parent c06d7247bb
commit 2a7db9e48c
8 changed files with 355 additions and 351 deletions

View File

@@ -103,7 +103,7 @@ typedef enum {
#define X(opcode, name, argc, pop, push, desc) opcode,
SPL_OPCODES(X)
#undef X
} spl_opcode_t;
} spl_vm_opcode_t;
/*
* Binary format (all metadata fields spl_val_t LE):
@@ -151,48 +151,48 @@ typedef enum {
#define SPL_BINFMT_MAGIC "SPLBIN\0\0"
// All SIR stack values are ptr-bit unsigned integers
typedef usize spl_val_t;
typedef usize spl_vm_val_t;
typedef struct spl_ins {
typedef struct spl_vm_ins {
uint8_t opcode;
uint8_t type;
spl_val_t imm;
} spl_ins_t;
typedef VEC(spl_ins_t) spl_ins_vec_t;
spl_vm_val_t imm;
} spl_vm_ins_t;
typedef VEC(spl_vm_ins_t) spl_vm_ins_vec_t;
typedef struct spl_func {
typedef struct spl_vm_func {
char *name;
spl_val_t idx_of_strtab;
spl_val_t nargs;
spl_val_t ninsns;
spl_val_t address;
} spl_func_t;
typedef VEC(spl_func_t) spl_func_vec_t;
spl_vm_val_t idx_of_strtab;
spl_vm_val_t nargs;
spl_vm_val_t ninsns;
spl_vm_val_t address;
} spl_vm_func_t;
typedef VEC(spl_vm_func_t) spl_vm_func_vec_t;
/* Native function pointer type */
typedef spl_val_t (*spl_fn_t)(int nargs, spl_val_t *args);
typedef struct spl_native {
typedef spl_vm_val_t (*spl_vm_fn_t)(int nargs, spl_vm_val_t *args);
typedef struct spl_vm_native {
char *name;
spl_val_t idx_of_strtab;
spl_fn_t impl_fn;
} spl_native_t;
typedef VEC(spl_native_t) spl_native_vec_t;
spl_vm_val_t idx_of_strtab;
spl_vm_fn_t impl_fn;
} spl_vm_native_t;
typedef VEC(spl_vm_native_t) spl_vm_native_vec_t;
typedef struct {
unsigned char *data;
usize size;
} spl_gdata_t;
typedef VEC(spl_gdata_t) spl_data_t;
typedef VEC(const char *) spl_strtab_t;
typedef MAP(const char *, const char *) spl_symtab_t;
} spl_vm_gdata_t;
typedef VEC(spl_vm_gdata_t) spl_vm_data_t;
typedef VEC(const char *) spl_vm_strtab_t;
typedef MAP(const char *, const char *) spl_vm_symtab_t;
/* Opaque handle for loaded program */
typedef struct spl_prog {
spl_ins_vec_t insns;
spl_func_vec_t funcs;
spl_native_vec_t natives;
spl_data_t gdata;
spl_strtab_t strtab;
spl_symtab_t symtab;
spl_vm_ins_vec_t insns;
spl_vm_func_vec_t funcs;
spl_vm_native_vec_t natives;
spl_vm_data_t gdata;
spl_vm_strtab_t strtab;
spl_vm_symtab_t symtab;
char *debug; /* 文件尾部 debug 段splc0 -g 追加的文本),无则 NULL */
usize debug_size;
} spl_prog_t;
@@ -203,18 +203,18 @@ void spl_prog_drop(spl_prog_t *prog);
int spl_prog_load_from_file(const char *fname, spl_prog_t *prog);
int spl_prog_store_to_file(const char *fname, spl_prog_t *prog);
int spl_prog_add_instr(spl_prog_t *prog, uint8_t opcode, uint8_t type, spl_val_t imm);
int spl_prog_add_instr(spl_prog_t *prog, uint8_t opcode, uint8_t type, spl_vm_val_t imm);
int spl_prog_add_data(spl_prog_t *prog, void *ptr, usize size);
int spl_prog_add_func(spl_prog_t *prog, spl_func_t *func);
int spl_prog_add_native(spl_prog_t *prog, spl_native_t *native);
int spl_prog_add_func(spl_prog_t *prog, spl_vm_func_t *func);
int spl_prog_add_native(spl_prog_t *prog, spl_vm_native_t *native);
spl_func_t *spl_prog_get_func(spl_prog_t *prog, const char *name);
spl_native_t *spl_prog_get_native(spl_prog_t *prog, const char *name);
spl_vm_func_t *spl_prog_get_func(spl_prog_t *prog, const char *name);
spl_vm_native_t *spl_prog_get_native(spl_prog_t *prog, const char *name);
/* Opcode name lookup for debugging/dumping */
const char *spl_opcode_name(spl_opcode_t opcode);
const char *spl_type_tag_name(spl_type_t type);
const char *spl_vm_opcode_name(spl_vm_opcode_t opcode);
const char *spl_vm_type_kind_name(spl_type_t type);
void spl_ins_dump(spl_ins_t *ins, spl_val_t addr);
void spl_vm_ins_dump(spl_vm_ins_t *ins, spl_vm_val_t addr);
#endif /* __SPL_MCODE_H__ */