Files
tinycc/.monkeycode/specs/2026-05-20-tinycc-improvements/tasklist.md
2026-05-30 07:59:28 +08:00

3.6 KiB
Raw Blame History

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 结构,添加 SourceLineColumnOffsetSuggestion 字段
  • 1.2.2 在 ErrorReporter 中实现源代码行缓存机制
  • 1.2.3 实现错误信息格式化器,支持代码上下文和位置标记显示
  • 1.2.4 集成到 CompilerDriver,在编译前缓存源代码行
  • 1.2.5 编写单元测试验证错误格式化输出

Task 1.3: 清理误提交文件

  • 1.3.1 更新 .gitignore,确保 bin/obj/test.ctest_output/ 被排除
  • 1.3.2 从 git 历史中移除 test_outputtest.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 记录初始基准数据,建立性能基线