littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于LLVM和MIPS的MiniSysY编译器

项目简介

本项目是基于LLVM和Java实现的Mini-SysY编译器,达成了将Mini-SysY语言编译成MIPS汇编代码的过程。编译器历经词法分析、语法分析、错误检查、LLVM中间代码生成、优化以及MIPS代码生成等一系列步骤,旨在实现高效编译并生成优化后的MIPS汇编代码。

项目的主要特性和功能

  1. 词法分析:读取源文件开展词法分析,生成Token流,可识别数字、标识符、运算符、字符串常量和注释。
  2. 语法分析:采用递归下降方式进行语法分析,生成抽象语法树(AST),支持常量声明、变量声明、函数定义和主函数定义等语法结构。
  3. 错误检查:检查语法分析后的AST是否存在错误,并把错误信息输出到文件,支持常量和变量的重复定义检查、函数参数数量和类型检查等。
  4. LLVM中间代码生成:将AST转换为LLVM中间表示(IR),支持常量传播、死代码移除、寄存器分配等优化。
  5. 优化:实现全局值编号(GVN)、死代码移除(DeadCodeRemove)、内存到寄存器转换(Mem2Reg)等优化技术,减少代码冗余,提升执行效率。
  6. 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】