项目简介
这是一个基于C++的编译器项目,其核心功能是将Sysy语言的源代码编译成RISC-V架构的伪汇编代码。项目借助ANTLR进行语法分析生成抽象语法树(AST),利用访问者模式把AST转换为中间表示(IR),最终通过R5Emitter将IR转换为RISC-V的伪汇编代码。
项目的主要特性和功能
- 语法分析器(Lexer和Parser):利用ANTLR生成词法分析器和语法分析器,把Sysy语言的源代码解析成AST。
- 中间表示(IR)生成:通过访问者模式将AST转换为LLVM的IR形式,方便后续的编译和优化。
- 优化处理:对IR实施多种优化,如冗余指令消除、常量折叠、常量传播、公共子表达式消除等,以此提升代码执行效率。
- 代码生成:借助R5Emitter将优化后的IR转换为RISC-V架构的伪汇编代码。
- 日志和错误处理:提供日志系统记录解析和编译过程中的信息,并处理解析过程中的错误。
安装使用步骤
假设用户已经下载了本项目的源码文件。
1. 进入项目目录
bash
cd Vrabche
2. 编译项目
bash
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
3. 运行编译器
bash
./Vrabche -S <SourceFilePath> [-O1|-O2|-O0] [-arm] [-dso] -o <OutputFilePath> [-save-llvm <OutputLLVMIRPath>]
- -Ox
选项用于指定编译器的优化级别。
- -arm
选项用于在IR中生成arm_aapcs_vfpcc
属性,但在生成ASM时会被忽略。
- -dso
选项用于在IR中生成dso_local
属性,但在生成ASM时会被忽略。
注意事项
- 依赖库:项目依赖于ANTLR和LLVM等库,要确保这些库已正确安装和配置。
- 错误处理:使用项目时可能会遇到语法错误或编译错误,需仔细检查输入的源代码和错误信息。
- 性能优化:项目中的优化处理可能需要一定的计算资源,对于大型项目或复杂算法,可能需要考虑优化编译过程。
- 扩展性:项目具备扩展性,可按需添加新的优化算法或支持其他架构的伪汇编代码生成。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】