feat(ir): 重构指针操作API并优化数组访问逻辑

- 将scc_ir_builder_get_ptr重命名为scc_ir_builder_get_elem_ptr以更好地反映其功能
- 移除旧的GET_PTR相关枚举和结构体定义
- 更新IR构建器中指针类型的处理逻辑,支持数组元素指针计算
- 在代码生成阶段正确处理元素指针操作的索引计算

fix(ast2ir): 修正数组下标表达式的指针获取操作

- 将数组访问中的get_ptr调用替换为get_elem_ptr
- 确保数组元素访问使用正确的IR指令

perf(runtime): 优化fprintf函数的大字符串处理性能

- 实现动态缓冲区分配策略,小字符串使用栈缓冲区,大字符串使用堆分配
- 避免固定大小缓冲区可能导致的截断问题
- 添加适当的内存清理机制
This commit is contained in:
zzy
2026-04-11 10:12:22 +08:00
parent eeb4c4fc3c
commit 053c6abf51
9 changed files with 106 additions and 63 deletions

View File

@@ -100,7 +100,6 @@ typedef enum scc_ir_value_tag {
SCC_IR_VALUE_TAG_GLOBAL_ALLOC, ///< 全局分配
SCC_IR_VALUE_TAG_LOAD, ///< 加载数据
SCC_IR_VALUE_TAG_STORE, ///< 存储数据
SCC_IR_VALUE_TAG_GET_PTR, ///< 获取指针
SCC_IR_VALUE_TAG_GET_ELEM_PTR, ///< 获取元素指针
SCC_IR_VALUE_TAG_OP, ///< 二元运算
SCC_IR_VALUE_TAG_BRANCH, ///< 有条件分支
@@ -258,10 +257,6 @@ struct scc_ir_value {
scc_ir_value_ref_t target;
scc_ir_value_ref_t value;
} store;
struct {
scc_ir_value_ref_t src_addr;
scc_ir_value_ref_t index;
} get_ptr;
struct {
scc_ir_value_ref_t src_addr;
scc_ir_value_ref_t index;