Skip to content

Latest commit

 

History

History
59 lines (43 loc) · 1.6 KB

readme.md

File metadata and controls

59 lines (43 loc) · 1.6 KB

基于 Rust 的 sysy 优化编译器

这是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

TODO

  1. 架构

    • 完善前后端分离设计方便组合前中后端代码
  2. 前端

    • 前端源代码解析方案调研
    • 前端 IR 设计与代码实现
    • 完成对 c 语言的解析
    • 完成对 sy 语言的解析
    • 中端 IR 生成
    • 兼容 sy,c 的源代码解析方案
    • 基础优化: 常量折叠
  3. 中端

    • 中端 IR 设计与代码实现
    • 中端 IR 验证方案: 生成 llvm IR
    • 数据流分析框架
    • 基础优化: mem2reg
    • 基础优化: 死代码删除
    • 基础优化: 函数内联
    • 基础优化: 尾递归
    • 循环优化: 循环不变量外提
    • 循环优化: 循环展开
    • 循环优化: 自动并行化
    • 循环优化: 结构优化
  4. 后端

    • 搭建汇编生成框架
    • 完成后端 IR 设计和实现
    • 完成后端 IR 验证方案: 解析 LLVM IR? (仍然有bug)
    • 后端 IR 生成
    • 基础优化: 乘除法优化
    • 基础优化: 块重排
    • 寄存器分配: 图着色分配
    • 寄存器分配: 统一代价模型+ILP
    • 指令调度: 相邻指令数据依赖优化
    • 指令调度: CPI 检测 方案
  5. cicd