87d38be255c8d3fc61b2d7710a836af04b84f7e0
注册遍模板函数重构(针对遍的不同构造方法), 修复phi指令更新引起的旧代码错误, 将CFG优化适配到现有终端框架中, 独立CFG优化方法使得其他优化遍能独立调用, usedelete方法回调取消删除功能。 IRGenerator代码风格修改。
SysY 编译器 by 32bit Brain Storm
SysY 编译器是一个基于 ANTLR4 的编译器,支持 SysY 语言的解析和编译。该编译器使用 C++ 实现,并提供了一些简单的命令行操作来处理 SysY 源代码。
项目配置。
请确保你已经安装了CMake。
mysysy/ $ bash setup.sh
常用操作
- 查看帮助信息:
mysysy/ $ build/bin/sysyc -h - 运行并打印IR:
mysysy/ $ build/bin/sysyc -s ir testdata/functional/21_if_test2.sy - 运行并打印汇编码:
或者输出到文件中:
build/bin/sysyc -s asm testdata/functional/21_if_test2.sybuild/bin/sysyc -S testdata/functional/21_if_test2.sy -o 21_if_test2.s - 运行并打印IR(包含调试信息):
build/bin/sysyc -s ird testdata/functional/21_if_test2.sy - 运行并打印汇编码(包含调试信息):
build/bin/sysyc -s asmd testdata/functional/21_if_test2.sy
配套脚本
(TODO: 需要完善)
TODO_list:
除开注释中的TODO后续时间充足可以考虑的TODO:
-
store load指令由于gep指令的引入, 维度信息的记录是非必须的, 考虑删除
-
use def关系经过mem2reg和phi函数明确转换为ssa形式, 以及函数参数通过value数组明确定义, 使得基本块的args参数信息记录非必须, 考虑删除
Description
Languages
C++
95.5%
Shell
3.9%
CMake
0.3%
ANTLR
0.3%