添加了对命令行参数枚举类型的支持,允许用户从预定义的选项中进行选择, 并在解析时进行验证。同时修复了空值检查问题。 refactor(mir): 重构pass管理系统 将原有的pass管理器系统简化为直接的pass执行函数,移除了复杂的 依赖管理和流水线构建机制,使系统更加简洁明了。 chore(ir): 添加Windows x64 ABI实现 实现了Windows x64平台的ABI约定,包括参数传递、寄存器使用和 栈帧布局的处理逻辑。 feat(config): 统一编译阶段控制配置 将多个独立的布尔类型编译阶段控制改为统一的枚举类型,便于 管理和扩展新的编译阶段。
41 lines
942 B
C
41 lines
942 B
C
#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;
|
|
|
|
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___ */
|