feat(ast2ir): 添加AST到IR转换功能并完善类型ABI支持
- 添加了ast2ir库用于将AST转换为IR中间表示 - 实现了Windows x64 ABI类型定义文件 - 完善了IR库中的类型定义,添加了无符号整数类型和操作符枚举 - 更新了IR转储功能以支持新的节点类型 - 在主程序中集成了AST到IR的转换流程 - 修改了PE目标文件生成功能以修正节区标志 - 更新了向量实现的日志和错误处理机制 fix(ir): 修复IR库中的操作符枚举和类型处理问题 - 修复了IR操作符枚举的命名空间问题,统一使用SCC_IR前缀 - 添加了无符号整数类型的哈希和比较支持 - 修正了常量整数节点的打印函数调用 - 更新了各种IR节点的转储输出格式 - 删除了测试文件中的冗余代码 refactor: 重构项目依赖配置和构建设置 - 启用了ast2ir和ir库的依赖配置 - 添加了def文件到.gitignore中 - 重命名了部分测试文件
This commit is contained in:
39
src/main.c
39
src/main.c
@@ -3,9 +3,9 @@
|
||||
#include <scc_pproc.h>
|
||||
|
||||
#include <ast_dump.h>
|
||||
#include <ir_dump.h>
|
||||
#include <scc_ast2ir.h>
|
||||
#include <scc_parser.h>
|
||||
// #include <ir_dump.h>
|
||||
// #include <scc_ast2ir.h>
|
||||
|
||||
typedef struct {
|
||||
const char *input_file;
|
||||
@@ -332,20 +332,29 @@ sstream_drop:
|
||||
return 0;
|
||||
}
|
||||
|
||||
// scc_ir_builder_t ir_builder;
|
||||
// scc_ast2ir(translation_unit, &ir_builder);
|
||||
scc_ir_builder_t ir_builder;
|
||||
scc_ir_builder_init(&ir_builder);
|
||||
#include <abi/win_x64_type_abi.h>
|
||||
scc_ast2ir_translation_unit(&ir_builder, translation_unit,
|
||||
scc_win_x64_type_abi);
|
||||
|
||||
// if (config.emit_ir) {
|
||||
// scc_ir_dump_ctx_t ir_dump_ctx;
|
||||
// scc_tree_dump_ctx_t tree_dump; // 仅为 ir dump 辅助
|
||||
// scc_tree_dump_ctx_init(&tree_dump, true);
|
||||
// scc_ir_dump_ctx_init(&ir_dump_ctx, &tree_dump, &ir_builder.cprog,
|
||||
// &ir_builder.ctx);
|
||||
// // scc_ir_dump_cprog(&ir_dump_ctx);
|
||||
// scc_ir_dump_cprog_linear(&ir_dump_ctx);
|
||||
// scc_tree_dump_ctx_drop(&tree_dump);
|
||||
// return 0;
|
||||
// }
|
||||
if (config.emit_ir) {
|
||||
scc_ir_dump_ctx_t ir_dump_ctx;
|
||||
scc_tree_dump_ctx_t tree_dump;
|
||||
if (fp == null) {
|
||||
scc_tree_dump_ctx_init(&tree_dump, true, (void *)scc_fprintf,
|
||||
(void *)scc_stdout);
|
||||
} else {
|
||||
scc_tree_dump_ctx_init(&tree_dump, false, (void *)scc_fprintf,
|
||||
(void *)fp);
|
||||
}
|
||||
scc_ir_dump_ctx_init(&ir_dump_ctx, &tree_dump, &ir_builder.cprog,
|
||||
&ir_builder.ctx);
|
||||
// scc_ir_dump_cprog(&ir_dump_ctx);
|
||||
scc_ir_dump_cprog_linear(&ir_dump_ctx);
|
||||
scc_tree_dump_ctx_drop(&tree_dump);
|
||||
return 0;
|
||||
}
|
||||
|
||||
scc_printf("output exe at %s\n", config.output_file);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user