commit initial

This commit is contained in:
baishi
2026-05-30 07:59:28 +08:00
commit cbefad339f
39 changed files with 7736 additions and 0 deletions

View File

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