feat(parser): 使用静态数组初始化测试向量

- 将多个测试用例中的 `scc_vec_unsafe_from_array` 替换为
  `scc_vec_unsafe_from_static_array` 以提高性能
- 此更改影响了 `test_parser_unit` 和 `test_parser_type` 函数中的多个位置

feat(sccf): 添加SCC格式支持和相关工具

- 创建新的 sccf 库用于处理 SCCF (SCC Format) 文件格式
- 实现了基本的文件格式定义,包括头部、段表、符号表等结构
- 添加了构建器和链接器的基本框架
- 包含格式化工具的初始实现

refactor(main): 修复输出文件检查逻辑

- 修正主函数中输出文件检查条件,确保在 fp 为 null 时正确处理
- 更新输出消息显示逻辑以匹配文件操作状态
This commit is contained in:
zzy
2026-03-16 11:02:32 +08:00
parent 45c59e0b65
commit cabd1710ed
12 changed files with 614 additions and 27 deletions

View File

@@ -0,0 +1,28 @@
#ifndef __SCC_FORMAT_BUILDER_H__
#define __SCC_FORMAT_BUILDER_H__
#include "sccf_utils.h"
#include <scc_utils.h>
typedef SCC_VEC(sccf_sym_t) sccf_sym_vec_t;
typedef SCC_VEC(sccf_reloc_t) sccf_reloc_vec_t;
typedef struct {
sccf_t sccf;
int aligned;
scc_strpool_t strpool;
scc_hashtable_t str2offset;
sccf_sym_vec_t syms;
sccf_reloc_vec_t relocs;
} sccf_builder_t;
void sccf_builder_init(sccf_builder_t *builder);
void sccf_builder_add_section(sccf_builder_t *builder,
sccf_sect_header_t *sect_header,
sccf_sect_data_t *sect_data);
void sccf_builder_to_buffer(sccf_builder_t *builder, sccf_buffer_t *buffer);
void sccf_builder_to_file(sccf_builder_t *builder, const char *file_path);
#endif /* __SCC_FORMAT_BUILDER_H__ */