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

@@ -0,0 +1,59 @@
/**
* @file scc_lir_module.h
* @brief LIR 模块:管理函数定义、全局符号和声明
*/
#ifndef __SCC_LIR_MODULE_H__
#define __SCC_LIR_MODULE_H__
#include "scc_lir.h"
#include <scc_cfg.h>
#include <scc_core.h>
#include <scc_hashtable.h>
typedef SCC_VEC(scc_lir_func_meta_t *) scc_lir_func_meta_vec_t;
typedef SCC_VEC(scc_lir_symbol_meta_t *) scc_lir_symbol_meta_vec_t;
typedef struct scc_lir_module {
scc_cfg_module_t cfg_module;
scc_lir_func_meta_vec_t func_metas;
scc_lir_symbol_meta_vec_t symbol_metas;
} scc_lir_module_t;
/**
* @brief 初始化 LIR 模块
*/
void scc_lir_module_init(scc_lir_module_t *module);
/**
* @brief 销毁 LIR 模块,释放所有函数和符号资源
*/
void scc_lir_module_drop(scc_lir_module_t *module);
/**
* @brief 添加一个函数声明(外部或未定义)
* @param mod 模块
* @param name 函数名
* @param attr 属性
* @return 符号指针
*/
scc_lir_symbol_id_t scc_lir_module_add_func_decl(scc_lir_module_t *module,
const char *name);
/**
* @brief 添加一个全局数据符号(定义或外部)
* @param mod 模块
* @param name 符号名
* @param kind 种类 (DATA 或 EXTERN)
* @param init_data 初始化数据 (若为 DATA 定义;若为 NULL 则零初始化)
* @param size 数据大小 (若为 EXTERN 可为 0)
* @param align 对齐要求
* @param attr 属性
* @return 符号指针
*/
scc_lir_symbol_id_t scc_lir_module_add_data(scc_lir_module_t *module,
const char *name,
scc_cfg_symbol_kind_t kind,
const u8 *init_data, usize size,
u32 align);
#endif /* __SCC_LIR_MODULE_H__ */