阶段2-3:Codec V2 化(变长指令字编解码 + 配置驱动 disasm 类型后缀)
- instr_len 前缀定长(1/01/001/0001 → 4/8/16/32B) - prefix_of/op_of/func_of + 全部位号 get/set(rd/rs1/rs2/imm32/slot32/off32/ fn_id32/fb_id16/cal_slot32/off32_hi/imm64) - set_byte0 按前缀写(11/10/011/010xxx 形态位/0010/0011/0001) - disasm:find_op_by_key 查配置;full/float/dst 类显示 .TYPE 后缀 (U8/I8/.../F64);CAL 打印 fb 名(CAL.TON s5);未知输出 ??? 0x hex - main.cpp --disasm 调用适配(TODO V2 待 Stb 重写) - 状态:编译仅剩 Codegen.cpp(84 处 V1 残留,下一步阶段2-5 重写)
This commit is contained in:
@@ -31,16 +31,16 @@ static int g_checks = 0;
|
||||
|
||||
// ---- 写临时 toml ----
|
||||
|
||||
static std::string write_tmp(const char* name, const char* content) {
|
||||
static std::string write_tmp(const char* name, const std::string& content) {
|
||||
const std::filesystem::path dir = std::filesystem::temp_directory_path();
|
||||
const std::filesystem::path path = dir / name;
|
||||
std::FILE* f = std::fopen(path.string().c_str(), "w");
|
||||
std::fputs(content, f);
|
||||
std::fputs(content.c_str(), f);
|
||||
std::fclose(f);
|
||||
return path.string();
|
||||
}
|
||||
|
||||
static bool expect_load_err(const char* name, const char* content, const char* keyword) {
|
||||
static bool expect_load_err(const char* name, const std::string& content, const char* keyword) {
|
||||
const std::string path = write_tmp(name, content);
|
||||
compiler::MachineConfig cfg;
|
||||
std::string err;
|
||||
|
||||
Reference in New Issue
Block a user