Files
scc/src/config.h

41 lines
942 B
C
Raw Normal View History

#ifndef __SCC_CONFIG_H__
#define __SCC_CONFIG_H__
#include <argparse.h>
typedef enum scc_emit_stage {
SCC_EMIT_STAGE_LEX,
SCC_EMIT_STAGE_PP,
SCC_EMIT_STAGE_AST,
SCC_EMIT_STAGE_HIR,
SCC_EMIT_STAGE_LIR,
SCC_EMIT_STAGE_MIR,
SCC_EMIT_STAGE_MIR_PASS_REG_ALLOC,
SCC_EMIT_STAGE_MIR_PASS_FLAME_LAYOUT,
SCC_EMIT_STAGE_MIR_PASS_PROLOG_EPILOG,
SCC_EMIT_STAGE_FLATBIN,
SCC_EMIT_STAGE_SCCF,
SCC_EMIT_STAGE_TARGET,
SCC_EMIT_STAGE_DEFAULT,
} scc_emit_stage_t;
typedef struct {
const char *input_file;
const char *output_file;
const char *target_description;
int verbose;
scc_argparse_list_t include_paths;
scc_argparse_list_t define_macros;
const char *entry_point_symbol;
feat(ast2ir): 添加AST上下文支持并修复类型转换逻辑 - 在scc_ast2ir_ctx_t中添加ast_ctx字段用于访问AST上下文 - 修改scc_ast2ir_ctx_init函数签名以接收ast_ctx参数 - 修复enum类型的处理逻辑,使用正确的内置类型获取方式 - 修正for循环控制流中错误的跳转目标 - 移除未使用的parse_struct_union_layout函数 refactor(cfg): 优化模块接口的const正确性 - 将scc_cfg_module_unsafe_get_*系列函数的module参数标记为const - 提高接口的安全性和一致性 refactor(lir): 简化寄存器定义宏 - 移除未使用的SCC_LIR_PREG宏定义 - 简化头文件中的冗余声明 fix(hir2lir): 修复空指针常量的表示方式 - 修正NULL值的AP整数表示,正确初始化ap结构体字段 - 确保空指针在低级IR中被正确表示 refactor(mir): 重构函数元数据结构 - 为MIR函数元数据添加栈槽位和寄存器分配相关字段 - 定义新的栈槽位数据结构scc_mir_stack_slot_t - 添加函数元数据初始化函数scc_mir_func_meta_init refactor(x86): 改进后端代码生成 - 修正ret指令生成,使用近返回指令RET_NEAR - 修复伪alloca指令的形式转换问题 - 改进选择函数的const正确性 - 正确初始化函数元数据结构 style(config): 添加MIR阶段配置选项 - 为MIR各个处理阶段添加配置标志 - 包括寄存器分配、栈布局和前言后记生成的输出选项 fix(parser): 改进错误处理机制 - 修正语义分析上下文变量命名 - 添加解析错误码检查,及时返回错误状态
2026-05-01 22:51:31 +08:00
scc_emit_stage_t emit_stage;
} scc_config_t;
void setup_argparse(scc_argparse_t *argparse, scc_config_t *config,
scc_argparse_lang_t lang);
#endif /* __SCC_CONFIG_H___ */