stage0 重命名字段 修复windows函数没有进入宏包装
This commit is contained in:
@@ -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__ */
|
||||
|
||||
Reference in New Issue
Block a user