|
|
d7ac5fd30b
|
feat(ir2mcode): 添加中间代码到统一输出格式转换模块
- 在.gitignore中添加*.pdb和*.dmp文件类型以忽略调试符号文件
- 重构libs/README.md文档,为各组件添加详细的功能说明和层级结构
- 创建ir2mcode模块的cbuild.toml配置文件,定义依赖关系
- 实现scc_ir2sccf功能,提供MIR到SCCF格式转换的核心接口
- 添加必要的头文件声明和基础实现框架
|
2026-04-26 18:22:08 +08:00 |
|
|
|
5a9f816ccf
|
fix(abi): 修复void类型的ABI计算缺少break语句
在scc_type_abi.c文件中,void类型的case分支缺少break语句,
导致执行流程错误地进入下一个case分支。
feat(ast): 为参数声明添加索引字段
在ast_def.h头文件中为参数声明结构体添加param_idx字段,
用于跟踪参数在函数参数列表中的位置索引。
feat(ast): 更新参数初始化函数以支持索引参数
修改scc_ast.h中的scc_ast_decl_param_init函数签名,
添加参数索引idx参数,并将该值存储到参数声明结构体中。
feat(ast2ir): 添加IR转换上下文的值使用提示选项
在ast2ir.h中为scc_ast2ir_ctx_t结构体添加hint_using_value字段,
控制参数转换时是使用值还是分配内存的方式。
fix(ast2ir): 正确处理void类型到IR的转换
当遇到大小为0的类型(如void)时,直接返回void类型,
而不是尝试匹配其他大小分支。
refactor(ast2ir): 统一基本块引用类型为value_ref
将逻辑表达式、条件语句、循环语句中的基本块引用类型
从bblock_ref_t改为value_ref_t,保持类型一致性。
fix(ast2ir): 修正函数引用空值检查
使用SCC_IR_REF_nullptr常量替代0进行函数引用的空值检查,
提高代码的可读性和正确性。
refactor(ast2ir): 简化参数处理逻辑
移除不必要的函数参数获取和命名设置逻辑,
通过递归调用scc_ast2ir_decl来处理参数声明。
feat(ast2ir): 实现参数声明到IR的转换
为参数声明添加完整的IR转换逻辑,包括类型转换、
参数引用创建和内存分配处理。
refactor(ast2ir): 更新哈希表初始化接口
适配新的哈希表初始化函数签名,添加userdata参数支持,
并初始化hint_using_value字段为false。
refactor(ir): 移除函数参数的预分配逻辑
删除IR构建器中函数参数的预分配和循环添加逻辑,
简化函数开始构建的处理流程。
refactor(ir): 更新类型哈希表键值处理
修改类型哈希表的哈希和比较函数以接受模块参数,
正确处理空引用情况并支持新的键值传递方式。
fix(ir): 修复IR转储中的字符串格式
移除IR函数转储时多余的换行符,确保输出格式正确。
refactor(ir): 更新模块哈希表初始化
适配哈希表初始化接口变更,添加userdata参数,
并为各种向量预留UID 0作为无效引用。
fix(ir): 修复模块清理中的循环起始索引
将模块清理循环的起始索引从0改为1,跳过预留的
无效引用项,避免访问空指针。
refactor(ir): 调整向量和哈希表操作顺序
调整模块中向量push和哈希表set的操作顺序,
确保数据一致性和正确的UID分配。
chore(build): 移除ir2mcode模块相关文件
移除ir2mcode相关的头文件和源文件,这些组件
将在后续重构中重新设计或替换。
|
2026-04-15 14:52:11 +08:00 |
|
|
|
8c7af571c2
|
refactor(ast2ir): 更新IR构建器接口并重构类型映射
- 将IR构建器初始化函数修改为接受cprog参数
- 添加scc_ast2ir_ctx_drop函数用于资源清理
- 更新类型标识符命名规范,从大写改为小写形式
- 替换scc_ir_ctx_get_*函数调用为scc_ir_module_get_*函数
- 移除对ir_builtin.h的依赖,改用ir_builder.h中的构建器函数
- 为整数常量创建添加专门的构建器辅助函数
fix(ir): 重构IR上下文和模块管理结构
- 将原有的scc_ir_cprog_ctx_t拆分为scc_ir_module_t和scc_ir_ctx_t
- 添加scc_ir_module_t结构用于统一管理IR对象存储
- 更新IR类型枚举名称格式,从SCC_IR_TYPE_XXX改为SCC_IR_TYPE_xxx
- 添加整数、无符号整数和浮点数常量联合体定义
- 移除ir_base.h和ir_builtin.h头文件,整合到scc_ir.h中
feat(ir_builder): 添加类型构建器函数和常量创建功能
- 为各种基础类型添加scc_ir_builder_type_*内联函数
- 实现scc_ir_builder_const_int函数用于创建整数常量
- 修改构建器初始化函数签名以接受cprog参数
- 更新构建器内部结构,使用指向cprog的指针而非嵌入式结构
|
2026-03-25 11:59:27 +08:00 |
|
|
|
741171dbba
|
feat(ir): 实现函数调用和参数处理功能
- 在AST定义中移除函数调用结构体中的冗余name字段
- 实现完整的函数声明和定义处理流程,支持符号表查找
- 添加函数参数引用节点类型,支持参数传递和访问
- 实现函数调用的IR生成,包括参数处理和符号解析
- 添加断言确保节点有效性,提升代码健壮性
fix(ast2ir): 优化类型转换处理逻辑
- 移除多余的注释说明
- 简化参数为空检查逻辑,提高代码简洁性
- 修复函数调用时的符号表查找机制
refactor(ir): 改进IR构建器接口设计
- 修改函数构建相关API,使接口更加清晰
- 添加函数声明集合管理
- 重构内置类型缓存机制
feat(ir2mcode): 完善AMD64代码生成
- 实现函数参数到寄存器的映射
- 添加函数调用约定支持(最多4个参数)
- 实现函数符号和重定位处理
- 添加栈帧管理机制
- 修正栈偏移计算
chore(ir): 清理和优化IR dump输出
- 更新节点类型描述信息
- 改进函数声明和定义的输出格式
- 修正格式化输出中的符号显示问题
style: 代码格式化和命名规范化
- 统一重定位类型枚举命名
- 优化函数参数验证和错误处理
|
2026-03-23 16:02:23 +08:00 |
|
|
|
de6f5d510a
|
feat(ir2mcode): 添加IR到机器码转换模块并更新依赖配置
- 新增ir2mcode库用于将IR转换为机器码
- 添加sccf2target依赖以支持目标平台转换
- 在ast库中添加scc_pos依赖支持位置信息
- 更新cbuild.toml配置文件添加新库依赖
- 实现AMD64架构代码生成功能
- 添加寄存器分配器实现栈和寄存器位置管理
- 支持基本的算术运算和内存访问操作
- 添加PE格式目标文件生成支持
|
2026-03-20 14:12:25 +08:00 |
|