3.6 KiB
3.6 KiB
TinyCC 改进计划 - 任务列表
Feature Name: 2026-05-20-tinycc-improvements Created: 2026-05-20
阶段一:基础完善
Task 1.1: 创建端到端测试框架
- 1.1.1 创建
TinyCC.E2ETests测试项目,配置 xUnit 测试框架 - 1.1.2 实现
E2ETestRunner类,支持编译 C 源代码并执行生成的 ELF 文件 - 1.1.3 实现测试用例管理,支持从嵌入式代码或文件加载测试用例
- 1.1.4 编写基础测试用例:算术运算、控制流、函数调用
- 1.1.5 运行端到端测试,验证当前编译器功能,记录失败项
Task 1.2: 增强错误报告
- 1.2.1 扩展
ErrorInfo结构,添加SourceLine、ColumnOffset、Suggestion字段 - 1.2.2 在
ErrorReporter中实现源代码行缓存机制 - 1.2.3 实现错误信息格式化器,支持代码上下文和位置标记显示
- 1.2.4 集成到
CompilerDriver,在编译前缓存源代码行 - 1.2.5 编写单元测试验证错误格式化输出
Task 1.3: 清理误提交文件
- 1.3.1 更新
.gitignore,确保bin/、obj/、test.c、test_output/被排除 - 1.3.2 从 git 历史中移除
test_output和test.c文件 - 1.3.3 验证
git status输出清洁,无构建产物
阶段二:功能完善
Task 2.1: 完善语义分析器
- 2.1.1 实现完整的
TypeChecker类,支持类型兼容性检查和类型提升 - 2.1.2 完善
ScopeManager,支持嵌套作用域和符号查找 - 2.1.3 实现函数签名验证,检测参数数量和类型不匹配
- 2.1.4 实现重复声明检测(函数和全局变量)
- 2.1.5 编写单元测试验证类型检查和作用域管理
Task 2.2: 预处理器集成到编译流程
- 2.2.1 完善
Preprocessor类,支持#include头文件搜索和展开 - 2.2.2 实现
#define宏定义和宏展开(包括函数宏) - 2.2.3 实现条件编译
#ifdef/#ifndef/#endif/#if/#else/#elif - 2.2.4 集成预处理器到
CompilerDriver.Compile流程 - 2.2.5 编写单元测试和 E2E 测试验证预处理功能
Task 2.3: 代码生成优化验证
- 2.3.1 完善
GraphColoringAllocator寄存器分配器实现 - 2.3.2 实现变量溢出到栈的逻辑和栈帧布局管理
- 2.3.3 集成优化代码生成器到
CompilerDriver - 2.3.4 编写测试验证优化前后代码执行结果一致性
- 2.3.5 比较优化前后生成的机器码长度和寄存器使用情况
阶段三:高级特性
Task 3.1: DWARF 调试信息生成
- 3.1.1 实现
DwarfGenerator类,支持 DWARF 调试信息编码 - 3.1.2 实现行号表生成(
.debug_line节) - 3.1.3 实现变量和类型调试信息(
.debug_info节) - 3.1.4 集成到
ElfWriter,添加调试信息节到 ELF 文件 - 3.1.5 使用 gdb 验证生成的调试信息可正确显示源码和设置断点
Task 3.2: PE 格式可执行文件支持
- 3.2.1 完善
PeWriter,生成完整的 PE32+ 文件头 - 3.2.2 实现
.text和.data节创建和填充 - 3.2.3 实现 PE 入口点设置和重定位处理
- 3.2.4 集成 PE 写出器到
CompilerDriver的 Windows 平台分支 - 3.2.5 验证生成的 PE 文件可在 Windows 环境加载执行
Task 3.3: 编译性能基准测试
- 3.3.1 实现
BenchmarkRunner类,支持编译时间和执行时间测量 - 3.3.2 创建标准测试用例集合(factorial、sort 等)
- 3.3.3 实现统计报告生成(均值、中位数、标准差)
- 3.3.4 集成到测试框架,支持一键运行基准测试
- 3.3.5 记录初始基准数据,建立性能基线