49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
# SysY 编译器 by 32bit Brain Storm
|
||
|
||
SysY 编译器是一个基于 ANTLR4 的编译器,支持 SysY 语言的解析和编译。该编译器使用 C++ 实现,并提供了一些简单的命令行操作来处理 SysY 源代码。
|
||
|
||
### 项目配置。
|
||
|
||
> 请确保你已经安装了CMake。
|
||
```bash
|
||
mysysy/ $ bash setup.sh
|
||
```
|
||
|
||
### 常用操作
|
||
|
||
- 查看帮助信息:
|
||
```bash
|
||
mysysy/ $ build/bin/sysyc -h
|
||
```
|
||
- 运行并打印IR:
|
||
```bash
|
||
mysysy/ $ build/bin/sysyc -s ir testdata/functional/21_if_test2.sy
|
||
```
|
||
- 运行并打印汇编码:
|
||
```bash
|
||
build/bin/sysyc -s asm testdata/functional/21_if_test2.sy
|
||
```
|
||
或者输出到文件中:
|
||
```bash
|
||
build/bin/sysyc -S testdata/functional/21_if_test2.sy -o 21_if_test2.s
|
||
```
|
||
- 运行并打印IR(包含调试信息):
|
||
```bash
|
||
build/bin/sysyc -s ird testdata/functional/21_if_test2.sy
|
||
```
|
||
- 运行并打印汇编码(包含调试信息):
|
||
```bash
|
||
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参数信息记录非必须, 考虑删除 |