Files
scc/libs/ir/mir/include/arch/scc_x86_reg_alloc.h
zzy d2eafa9dc6 refactor(ast2ir): 移除废弃的ABI依赖并优化类型转换处理
移除了对scc_abi包的依赖,将相关头文件从libs/abi移动到libs/ast2ir目录下。
重构了基本类型解析功能,将parse_base_type函数提取为独立的
scc_ast2ir_parse_base_type实现,并支持有符号/无符号类型区分。

feat(ast2ir): 实现整数常量表达式求值器

新增了完整的整数常量表达式求值功能,支持C11标准中的常量表达式规则,
包括字面量、标识符、sizeof/_Alignof、一元/二元运算、条件表达式和
类型转换等操作。该功能用于数组大小和枚举值的编译期计算验证。

refactor(ast2ir): 完善类型提升和算术转换机制

改进了整数提升和寻常算术转换的实现,修复了移位操作的符号处理问题,
添加了无符号比较操作的支持,增强了类型安全检查,统一了错误处理流程。

fix(ast2ir): 修复赋值表达式返回值和数组大小计算问题

修正了赋值表达式的返回值处理,确保返回右侧值而不是存储指令引用。
使用新的常量表达式求值器替代原有的硬编码数组大小计算,提高了
数组声明的正确性。
2026-05-31 17:30:22 +08:00

18 lines
625 B
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __SCC_X86_REG_ALLOC_H__
#define __SCC_X86_REG_ALLOC_H__
#include "../core_pass/scc_reg_alloc.h"
/* 默认位掩码策略R8/R9 被排除ABI 参数寄存器),剩余 6 个通用寄存器 */
void scc_reg_alloc_fill_arch_x86(scc_reg_alloc_op_t *ops);
/*
* 顺序分配策略:光标递增,永不回收。
* 池中包含 R8-R15共 8 个寄存器),每分配一个光标前进一格。
* release_reg 为空操作;寄存器耗尽后 acquire_reg 返回 -1
* 由分配器回退为纯栈操作。
*/
void scc_reg_alloc_fill_seq_x86(scc_reg_alloc_op_t *ops);
#endif /* __SCC_X86_REG_ALLOC_H__ */