# 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 记录初始基准数据,建立性能基线