|
|
3df858fb85
|
feat(mir): 添加栈偏移操作数类型并重构内存访问表示
- 将 MIR 中的 SCC_MIR_OP_MEM 替换为更精确的 SCC_MIR_OP_STACK_SLOT 和
SCC_MIR_OP_STACK_OFFSET 类型
- 在 x86_64 指令选择中更新相应的内存操作数处理逻辑
- 修改寄存器分配器中的栈槽操作数类型检查
- 更新 IR 转机器码过程中的内存操作数转换
refactor(hir): 使用 tree_dump_node 输出函数节点
- 将 hir_dump 中的函数名输出从 append 改为 node 类型
refactor(frame-layout): 重构栈帧布局传递实现结构
- 引入函数指针实现方式替代直接函数实现
- 将栈帧分配功能集成到 MIR 传递流程中
- 移除独立的 frame_layout 实现文件
refactor(prolog-epilog): 添加函数序言/尾声传递框架
- 为 Windows x64 平台初始化序言/尾声生成器
- 在 MIR 传递阶段添加序言/尾声处理步骤
refactor(win64): 更新 Windows x64 目标平台接口
- 重命名寄存器分配填充函数为 scc_win_pc_x64_reg_alloc_fill
- 添加栈帧分配和序言/尾声初始化函数
- 修正参数传递中的栈槽操作数类型
refactor(dump): 改进 MIR 输出格式
- 将基本块显示改为分支节点类型
- 更新操作数类型的显示处理
chore: 添加 x86 编码相关数据结构定义
- 新增 scc_x86_encode.h 头文件包含内存操作数和指令编码接口定义
|
2026-05-13 18:47:44 +08:00 |
|
|
|
68eac24152
|
feat(mir): 实现x86-64架构寄存器分配和指令选择优化
- 修改x86_64_isel.h接口,将func_meta替换为func指针,并添加新的isel函数原型
- 添加x86_64_reg_alloc.h头文件,提供架构特定的寄存器分配操作填充函数
- 更新frame_layout.h定义frame_layout上下文结构
- 重构reg_alloc.h中的寄存器分配操作结构体,将ops从指针改为值类型,
并将mark_reg_unused重命名为clean_mark_regs
- 扩展scc_mir.h中的函数元数据,添加vregs_count字段和虚拟寄存器管理函数
- 重新定义MIR pass阶段枚举,添加FRAME_LAYOUT和PROLOGUE_EPILOGUE阶段
- 添加win64目标相关头文件和实现,提供Windows x64 ABI降低和寄存器分配填充
- 更新虚拟寄存器表示格式从$到%,修复alloca指令处理
- 重构寄存器分配算法,改进虚拟寄存器到物理寄存器/栈槽的映射机制
- 完善MIR pass调度,支持多阶段处理流程
|
2026-05-12 10:55:58 +08:00 |
|
|
|
4f40f0d5e4
|
feat(mir): 添加寄存器分配 pass 支持
- 实现了核心寄存器分配接口 scc_reg_alloc.h
- 添加 x86_64 架构特定的寄存器分配实现
- 实现基础的虚拟寄存器到物理寄存器分配逻辑
- 支持栈槽分配和重载/存储指令生成
fix(argparse): 修复帮助信息打印中的枚举类型显示
- 将固定大小缓冲区改为动态字符串处理
- 正确显示枚举类型的选项值和可选值列表
- 使用 | 分隔符展示多个可选值
refactor(main): 调整编译流程中的 pass 阶段支持
- 更新配置文件中各编译阶段的名称定义
- 添加对寄存器分配、帧布局等中间表示 pass 的支持
- 重构主流程以支持不同 MIR 阶段的代码输出
|
2026-05-11 13:18:58 +08:00 |
|
|
|
902ee6dea3
|
feat(argparse): 添加枚举类型选项支持
添加了对命令行参数枚举类型的支持,允许用户从预定义的选项中进行选择,
并在解析时进行验证。同时修复了空值检查问题。
refactor(mir): 重构pass管理系统
将原有的pass管理器系统简化为直接的pass执行函数,移除了复杂的
依赖管理和流水线构建机制,使系统更加简洁明了。
chore(ir): 添加Windows x64 ABI实现
实现了Windows x64平台的ABI约定,包括参数传递、寄存器使用和
栈帧布局的处理逻辑。
feat(config): 统一编译阶段控制配置
将多个独立的布尔类型编译阶段控制改为统一的枚举类型,便于
管理和扩展新的编译阶段。
|
2026-05-10 15:02:36 +08:00 |
|
|
|
e5cb70732e
|
feat(lir): 添加函数参数操作数类型支持
添加 SCC_LIR_INSTR_KIND_ARG 枚举值用于表示函数参数操作数,
修改 scc_lir_instr 结构体以支持参数类型的值存储,
新增 SCC_LIR_ARG 宏定义用于创建参数操作数,
更新 HIR 到 LIR 的转换逻辑以正确处理函数参数引用。
BREAKING CHANGE: 修改了 LIR 指令格式以支持参数操作数类型。
refactor(mir): 重命名并重构 x86_64 指令选择模块
将 mir_x86.c 重命名为 arch/x86_64_isel.c,
创建新的头文件 arch/x86_64_isel.h,
重构结构体名称为 scc_x86_64_isel_t,
统一函数命名前缀为 scc_x86_,
移除重复的包含头文件。
feat(abi): 添加 ABI 降低框架接口定义
定义 scc_abi_lowering_t 结构体用于 ABI 降低功能,
提供函数指针类型定义用于调用、返回、参数等处理,
为后续实现不同平台 ABI 支持奠定基础。
fix(x86): 支持参数操作数的 MIR 转换
更新 lir_val_to_mir_op 函数以处理 SCC_LIR_INSTR_KIND_ARG 类型,
通过 ABI 降低框架获取参数的实际物理位置,
修复移位运算和除法运算中的函数调用命名。
test: 更新测试用例期望值
调整多个测试用例的期望返回值,
修改字符串字面量和循环条件以匹配新的预期行为,
确保测试用例与编译器功能变化保持一致。
|
2026-05-07 20:07:27 +08:00 |
|