commit initial
This commit is contained in:
80
.monkeycode/specs/2026-05-20-tinycc-improvements/tasklist.md
Normal file
80
.monkeycode/specs/2026-05-20-tinycc-improvements/tasklist.md
Normal 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 记录初始基准数据,建立性能基线
|
||||
Reference in New Issue
Block a user