本项目是 2025年全国大学生计算机系统能力大赛-编译系统设计赛-编译系统实现赛 的参赛作品,荣获 全国二等奖(国二)。
- 比赛名称:2025年全国大学生计算机系统能力大赛-编译系统设计赛-编译系统实现赛
- 获奖情况:全国二等奖
- 分支说明:当前分支 即为最终代码提交测试的分支。
- 最新更新:本项目的后续开发与最新更新请移步至 GitHub 仓库:https://github.com/Crzax/compiler2025-x
.
├── src/
│ ├── frontend/ # 前端:基于 ANTLR4 的词法/语法分析,生成初始 IR
│ ├── midend/ # 中端:中间代码(IR)定义及基础处理逻辑
│ ├── backend/ # 后端:RISC-V 汇编生成、寄存器分配、栈帧管理
│ ├── opt/ # 优化层:包含中端优化(midend)与后端优化(backend)
│ │ ├── midend/ # 中端优化:常量折叠、死代码消除、别名分析、循环优化等
│ │ └── backend/ # 后端优化:指令选择优化、窥孔优化等
│ ├── main/ # 编译器入口:处理命令行参数,调度各阶段编译流程
│ └── exception/ # 异常处理:编译过程中的错误捕获与提示
├── 设计分析文档.md # 详细的设计思路与技术实现说明
├── pom.xml # Maven 项目配置文件
├── compilesy.sh # 编译脚本
├── runTest.py # 自动化测试脚本
└── runSingleTest.py # 单个测试用例运行脚本
- 前端:基于 ANTLR4 生成语法解析树。
- 中端:借鉴 LLVM 实现,包含常量折叠、常量传播、条件简化、GEP 指令优化等。支持别名分析、控制流分析、支配图分析、值域分析及标量演化分析。
- 后端:支持 RISC-V 规范,实现了基于图着色的寄存器分配策略,包含活跃性分析、冲突图构建、跨函数调用寄存器保护以及栈帧管理。针对乘除法和取余进行了常数优化。
更多详细设计请参考 设计分析文档.md。