|
|
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 |
|
|
|
ffb23afaf4
|
feat(ast2ir): 添加数组初始化支持和AST转IR优化
添加了对未知长度数组的自动长度推导功能,支持字符串字面量和复合
初始化的数组长度计算。新增辅助函数resolve_array_length用于计算
数组实际长度,以及emit_array_initialization用于生成数组初始化
代码。
同时将AST转IR过程中的参数改为const引用,提高代码安全性。
新增IR构建器的借用检查机制,防止在借用期间进行重分配操作。
fix(ast): 为AST结构体添加详细注释说明字段用途
|
2026-04-13 11:36:52 +08:00 |
|
|
|
4144f7841c
|
refactor(argparse): 将null替换为nullptr以提高C++兼容性
- 在argparse库中将所有null指针常量替换为nullptr
- 更新头文件和源文件中的指针初始化和比较操作
- 修改测试文件中的相关断言检查
- 更新AST定义文件中的注释说明
|
2026-04-05 20:18:09 +08:00 |
|
|
|
d167a8ba96
|
fix(sccf): 修复符号构建器中的字符串处理逻辑
在sccf_builder_add_symbol函数中修正了字符串键的使用方式,
直接使用传入的name参数而不是从字符串表中获取,
避免了潜在的内存访问问题并简化了代码逻辑。
|
2026-03-23 18:11:32 +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 |
|
|
|
02a6c684f1
|
feat(ast2ir): 添加左值标识支持以改善表达式处理
- 在 scc_ast2ir_expr 函数中添加 is_lvalue 参数来区分左值和右值表达式
- 更新二元表达式处理逻辑,特别是赋值操作符的处理
- 改进标识符表达式的处理,根据是否为左值决定返回存储位置还是加载值
- 修复哈希比较函数的实现
- 移除调试相关的注释代码
refactor(parser): 优化语法分析器错误处理和控制流
- 移除不必要的错误恢复辅助注释
- 修改表达式解析的控制流程,将直接返回改为使用 break 语句
- 添加语义分析回调,在解析完成后进行标识符查找和验证
refactor(sema): 增强语义分析阶段的符号表管理
- 改进标识符查找逻辑,增加对非变量标识符的检查
- 扩展声明处理范围,包括变量和参数声明的符号表注册
- 为函数声明添加作用域管理
fix(parser): 修正单元测试中的类型定义
- 将 long long 类型定义改为 int 类型,解决测试兼容性问题
refactor(sccf): 重构文件格式定义和构建器实现
- 重命名符号类型枚举值 OBJECT 为 EXTERN
- 重命名段类型枚举值 RELOC 为 RELOCS
- 修正结构体字段命名的一致性问题
- 重新设计 SCCF 构建器的数据结构和API
- 添加符号表、字符串表和重定位表的构建支持
refactor(target): 重命名Windows PE相关类型定义
- 将 scc_winpe_* 类型重命名为 scc_pe_* 以保持命名一致性
chore: 添加 sccf2target 模块用于格式转换
- 创建新的库模块用于 SCCF 到目标格式的转换
- 实现 PE 格式转换的基本功能
- 添加示例程序演示格式转换过程
|
2026-03-19 12:11:57 +08:00 |
|
|
|
cabd1710ed
|
feat(parser): 使用静态数组初始化测试向量
- 将多个测试用例中的 `scc_vec_unsafe_from_array` 替换为
`scc_vec_unsafe_from_static_array` 以提高性能
- 此更改影响了 `test_parser_unit` 和 `test_parser_type` 函数中的多个位置
feat(sccf): 添加SCC格式支持和相关工具
- 创建新的 sccf 库用于处理 SCCF (SCC Format) 文件格式
- 实现了基本的文件格式定义,包括头部、段表、符号表等结构
- 添加了构建器和链接器的基本框架
- 包含格式化工具的初始实现
refactor(main): 修复输出文件检查逻辑
- 修正主函数中输出文件检查条件,确保在 fp 为 null 时正确处理
- 更新输出消息显示逻辑以匹配文件操作状态
|
2026-03-16 11:02:32 +08:00 |
|