|
|
096177e7e8
|
feat(ast2ir): 添加多种表达式和语句类型的TODO实现
添加了对CAST、COMPOUND、LVALUE、BUILTIN等表达式类型的支持,
以及SWITCH、CASE、DEFAULT等语句类型的框架实现。
fix(hir_dump): 修复整数值格式化显示问题
修改了整数值的获取方式,从原来的const_int.int32改为integer.data.digit,
并添加了hack注释说明。
fix(lir_module): 修复数据符号添加中的比较操作符错误
将赋值操作符'='改为相等比较操作符'==',修正了条件判断逻辑。
refactor(mir_x86): 改进寄存器分配和指令选择逻辑
添加了函数元数据字段用于虚拟寄存器计数,改进了移动指令的处理逻辑,
将条件分支相关代码替换为setcc指令序列。
fix(parser): 修正类型指针返回类型一致性
统一了类型获取函数的返回类型,从const指针改为非const指针,
确保类型系统的一致性。
fix(parser): 修复结构体类型解析中的类型分配问题
修改了匿名结构体类型的处理逻辑,确保类型声明能够正确挂载到AST中。
fix(config): 修正emit-target参数类型配置
将emit-target选项的参数类型从字符串改为布尔型,修正了配置解析。
test: 增加全局超时控制和测试优化
添加了全局超时机制防止测试无限等待,改进了测试运行器的统计信息输出。
|
2026-05-06 18:06:33 +08:00 |
|
|
|
aa8a1ff8ce
|
feat(compiler): 启用 ir2mcode 和 sccf2target 库并实现 x86_64 代码生成
- 在 cbuild.toml 中启用 ir2mcode 和 sccf2target 依赖库
- 修改 justfile 中的构建命令,使用 release 模式并更新 tokei 统计排除 mcode 目录
- 重构 LIR 中的地址操作数类型,将 SCC_LIR_INSTR_KIND_ADDR 重命名为 SCC_LIR_INSTR_KIND_MEM
- 实现完整的 MIR 到 x86_64 机器码转换,包括:
- 添加 move、compare、binary operation 等指令发射函数
- 实现条件分支和跳转指令生成
- 支持算术、逻辑、移位等基本操作
- 添加调用和返回指令处理
- 实现栈分配和寄存器分配功能
- 完善 ir2mcode 模块,将 MIR 指令转换为机器码
- 更新 ir2sccf 模块,集成机器码生成功能
- 添加 mcode 库的架构支持和内存管理功能
- 修复 PE 文件生成中的空指针检查问题
|
2026-05-05 15:59:31 +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 |
|
|
|
4ddad7b456
|
docs(scc_core): 添加standalone printf库的完整文档
添加了printf/sprintf格式化打印函数库的详细README文档,包含:
- 库的功能介绍和设计目标
- 使用方法和CMake配置选项
- 支持的格式说明符和API文档
- 贡献指南和许可证信息
fix(test): 改进测试脚本的并发安全性和资源清理
修改了测试脚本以支持并发执行,避免多进程测试时的文件冲突:
- 使用UUID生成唯一的可执行文件名
- 改进了编译和执行过程中的错误处理
- 添加了确保临时文件被正确清理的机制
- 移除了原有的固定文件名和清理逻辑
|
2026-03-25 11:59:56 +08:00 |
|
|
|
097dbdcc2a
|
feat(ir2mcode): 实现AMD64代码生成器支持控制流和函数调用
- 实现了条件分支、无条件跳转和函数调用的机器码生成
- 添加了跳转目标地址回填机制,处理条件分支和跳转指令的偏移量
- 改进了寄存器分配逻辑,支持函数调用返回值的处理
- 重构了位置解析函数,从返回指针改为传入引用参数
fix(ast2ir): 移除无用的注释代码
- 删除了关于一元操作符映射的注释代码
test: 更新测试框架和测试用例
- 修改测试框架以支持新的可执行文件输出格式
- 添加了条件分支、循环和函数调用的测试用例
- 使用TOML配置文件管理期望的返回值
- 替换标准库头文件为自定义头文件以减少依赖
|
2026-03-21 14:38:30 +08:00 |
|
|
|
e22811f2f5
|
feat(build): 引入新的 Python 构建系统并移除旧 Makefile
新增基于 Python 的构建脚本 `cbuild.py`,支持包管理、依赖解析和模块化编译。
同时添加 `.gitignore` 忽略 `build` 目录,并在 `justfile` 中更新构建命令。
移除了原有的 `lib/Makefile` 和主目录下的相关 make 规则,统一使用新构建系统。
|
2025-11-20 10:44:59 +08:00 |
|