feat(ir): 启用LIR模块并重构HIR组件结构

- 在cbuild.toml中启用lir依赖项,取消注释相关配置
- 重构libs/README.md文档,添加详细的库说明和层级结构
- 重命名头文件以统一命名规范:ast_def.h → scc_ast_def.h,
  ast_dump.h → scc_ast_dump.h, hir相关文件添加scc前缀
- 更新include路径以匹配新的文件命名
- 在cfg模块中添加symbol ID类型和linkage枚举,完善符号表功能
- 实现cfg模块中的符号添加、查找和获取功能
- 修改HIR中meta字段替换原有的attribute字段,更新相关访问宏
- 修复HIR构建器中的函数元数据访问错误
- 为LIR模块创建完整的头文件结构,包括指令定义、转换器等组件
This commit is contained in:
zzy
2026-04-21 20:35:37 +08:00
parent 0fbfb36262
commit e850b5c981
30 changed files with 1588 additions and 2627 deletions

View File

@@ -3,12 +3,12 @@
#include <scc_parser.h>
#include <scc_pproc.h>
#include <ast_dump.h>
#include <hir_dump.h>
#include <scc_ast2ir.h>
#include <scc_ast_dump.h>
#include <scc_hir2lir.h>
#include <scc_hir_dump.h>
#include <scc_lir_dump.h>
// #include <scc_ir2lir.h>
// #include <scc_lir_dump.h>
// #include <scc_ir2mcode.h>
// #include <sccf2pe.h>
@@ -231,7 +231,7 @@ sstream_drop:
} else {
scc_tree_dump_init(&tree_dump, false);
}
scc_hir_dump_ctx_init(&ir_dump_ctx, &tree_dump, &cprog);
scc_hir_dump_init(&ir_dump_ctx, &tree_dump, &cprog);
// scc_ir_dump_cprog(&ir_dump_ctx);
scc_hir_dump_cprog_linear(&ir_dump_ctx);
@@ -241,28 +241,26 @@ sstream_drop:
return 0;
}
// scc_lir_builder_t lir_builder;
// scc_lir_module_t lir_module;
// scc_lir_module_init(&lir_module);
// scc_lir_builder_init(&lir_builder, &lir_module);
// scc_ir2lir(&lir_builder, &cprog);
// if (config.emit_lir) {
// scc_lir_dump_ctx_t lir_dump_ctx;
// scc_tree_dump_t tree_dump;
// if (fp == nullptr) {
// scc_tree_dump_init(&tree_dump, true);
// } else {
// scc_tree_dump_init(&tree_dump, false);
// }
// scc_lir_dump_init(&lir_dump_ctx, &tree_dump);
// // scc_ir_dump_cprog(&ir_dump_ctx);
// scc_lir_dump_module(&lir_dump_ctx, &lir_module);
scc_lir_module_t lir_module;
scc_lir_module_init(&lir_module);
scc_hir2lir(&lir_module, &cprog);
if (config.emit_lir) {
scc_lir_dump_ctx_t lir_dump_ctx;
scc_tree_dump_t tree_dump;
if (fp == nullptr) {
scc_tree_dump_init(&tree_dump, true);
} else {
scc_tree_dump_init(&tree_dump, false);
}
scc_lir_dump_init(&lir_dump_ctx, &tree_dump, &lir_module);
// scc_ir_dump_cprog(&ir_dump_ctx);
scc_lir_dump_module(&lir_dump_ctx);
// scc_tree_dump_flush(&tree_dump, tree_dump_output,
// fp == nullptr ? scc_stdout : fp);
// scc_tree_dump_drop(&tree_dump);
// return 0;
// }
scc_tree_dump_flush(&tree_dump, tree_dump_output,
fp == nullptr ? scc_stdout : fp);
scc_tree_dump_drop(&tree_dump);
return 0;
}
// scc_ir2mcode_ctx_t ir2mcode_ctx;
// sccf_builder_t sccf_builder;