这是2024全国大学生系统能力竞赛编译器实现赛道的来自哈工深的duskphantom队的实现. 比赛提交时仓库:https://gitlab.eduxiji.net/T202418123202876/compiler2024-duskphantom.git
生成未优化的 rv64gc 汇编代码:
compiler a.sy -S -o a.s
生成优化后的 rv64gc 汇编代码:
compiler a.sy -S -o a.s -O1
-
架构
- 完善前后端分离设计方便组合前中后端代码
-
前端
- 前端源代码解析方案调研
- 前端 IR 设计与代码实现
- 完成对 c 语言的解析
- 完成对 sy 语言的解析
- 中端 IR 生成
- 兼容 sy,c 的源代码解析方案
- 基础优化: 常量折叠
-
中端
- 中端 IR 设计与代码实现
- 中端 IR 验证方案: 生成 llvm IR
- 数据流分析框架
- 基础优化: mem2reg
- 基础优化: 死代码删除
- 基础优化: 函数内联
- 基础优化: 尾递归
- 循环优化: 循环不变量外提
- 循环优化: 循环展开
- 循环优化: 自动并行化
- 循环优化: 结构优化
-
后端
- 搭建汇编生成框架
- 完成后端 IR 设计和实现
- 完成后端 IR 验证方案: 解析 LLVM IR? (仍然有bug)
- 后端 IR 生成
- 基础优化: 乘除法优化
- 基础优化: 块重排
- 寄存器分配: 图着色分配
- 寄存器分配: 统一代价模型+ILP
- 指令调度: 相邻指令数据依赖优化
- 指令调度: CPI 检测 方案
-
cicd