项目简介
本项目是基于LLVM和Java实现的Mini-SysY编译器,达成了将Mini-SysY语言编译成MIPS汇编代码的过程。编译器历经词法分析、语法分析、错误检查、LLVM中间代码生成、优化以及MIPS代码生成等一系列步骤,旨在实现高效编译并生成优化后的MIPS汇编代码。
项目的主要特性和功能
- 词法分析:读取源文件开展词法分析,生成Token流,可识别数字、标识符、运算符、字符串常量和注释。
- 语法分析:采用递归下降方式进行语法分析,生成抽象语法树(AST),支持常量声明、变量声明、函数定义和主函数定义等语法结构。
- 错误检查:检查语法分析后的AST是否存在错误,并把错误信息输出到文件,支持常量和变量的重复定义检查、函数参数数量和类型检查等。
- LLVM中间代码生成:将AST转换为LLVM中间表示(IR),支持常量传播、死代码移除、寄存器分配等优化。
- 优化:实现全局值编号(GVN)、死代码移除(DeadCodeRemove)、内存到寄存器转换(Mem2Reg)等优化技术,减少代码冗余,提升执行效率。
- MIPS代码生成:把优化后的LLVM中间代码转换为MIPS汇编代码,支持寄存器分配、内存管理、函数入口和出口处理等。
安装使用步骤
1. 环境准备
- 确保系统已安装Java开发环境(JDK)。
- 安装LLVM工具链,用于生成和优化中间代码。
2. 编译项目
- 使用命令行工具进入项目根目录。
- 运行以下命令编译项目:
bash javac -d bin src/**/*.java
3. 运行编译器
- 在命令行中运行以下命令启动编译器:
bash java -cp bin Compiler
- 编译器会读取
testfile.txt
中的源代码,依次进行词法分析、语法分析、错误检查、代码优化和MIPS代码生成,最终输出到mips.txt
文件中。
4. 查看输出
- 打开
mips.txt
文件,查看生成的MIPS汇编代码。
通过上述步骤,可成功编译Mini-SysY源代码并生成优化的MIPS汇编代码。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】