参考的一些有关mips的博客
Compiler Explorerhttps://godbolt.org/
MIPS指令集:寄存器_无色云的博客-CSDN博客_mips寄存器 不同的计算机架构中寄存器的种类和数量也不相同。MIPSmips中用到的寄存器按照功能分为有通用寄存器、协处理器0、浮点寄存器、乘法部件寄存器。通用寄存器共32个,是没有特殊限制,一般程序员可以使用的寄存器。协处理器0寄存器也叫控制寄存器,共32个,用来控制并管理CPU。浮点寄存器和乘法部件寄存器都是专用寄存器。浮点寄存器也叫协处理器1寄存器,共32个,用来存储和浮点计算相关的数据。乘法部件...https://blog.csdn.net/weixin_38669561/article/details/104859871
【问题描述】
请在词法分析、语法分析及错误处理作业的基础上,为编译器实现语义分析、代码生成功能。输入输出及处理要求如下:
(1)需根据文法规则及语义约定,采用自顶向下的语法制导翻译技术,进行语义分析并生成目标代码(任选其一);
(2)对于选择生成MIPS的编译器,约定如下:
完成编译器,将源文件(统一命名为testfile.txt)编译生成MIPS汇编并输出到文件(统一命名为mips.txt),具体要求包括:
a)需自行设计四元式中间代码,再从中间代码生成MIPS汇编,请设计实现输出中间代码的有关函数,本次作业不考核,后续会有优化前后中间代码的输出及评判(输出文件命名为学号_姓名_优化前/后中间代码.txt)。
b)若选择此项任务,后续的作业需参加竞速排序,请提前预留代码优化有关的接口,并设计方便切换开启/关闭优化的模式
c)自行调试时,可使用Mars仿真器(使用方法见“Mars仿真器使用说明.docx”),提交到平台的编译器只需要能按统一的要求生成MIPS汇编代码文件即可
d)此类提交的编译器请仅读取testfile.txt文件并生成相应的MIPS代码,编译器自身不要读入标准输入中的内容。
(3)对于选择生成PCODE的编译器,约定如下:
完成编译器和解释执行程序,将源文件(统一命名为testfile.txt)编译生成PCODE目标代码并解释执行,得到解释执行的结果(以输出至"pcoderesult.txt"文件中的形式给出),具体要求包括:
a)需自行设计PCODE,可参考PASCAL-S编译器的处理
b)将生成的PCODE直接进行解释执行,在提交的作业中不需要输出PCODE
c)执行PCODE时,输入从标准输入中读取;输出至pcoderesult.txt文件中
【输入形式】testfile. txt为符合文法要求的测试程序,另外可能存在来自于标准输入的数据。
【输出形式】 按照选择的不同难度分为两类:
1)生成MIPS的编译器
按如上要求将目标代码生成结果输出至mips.txt中,中文字符的编码格式要求是UTF-8。
2)生成PCODE的编译器
按如上要求生成PCODE并解释执行,在pcoderesult.txt中记录解释执行结果,中文字符的编码格式要求是UTF-8。
【样例输入】
testfile.txt如下:
int test; void main(){ printf("Hello World"); scanf(test); printf(test); }
标准输入如下:
1837
【样例输出】
Hello World 1837
【评分标准】
按与预期结果不一致的行数扣分,每项扣10%。
【特别说明】
(1)本次作业是为了让同学们尽快实现一个完整的编译器,测试程序中仅涉及常量说明、变量说明、读语句、写语句、赋值语句,无函数定义及调用,无数组声明及引用。
(2)两种目标代码任选其一完成,若生成PCODE代码,成绩总分为85分;若生成MIPS汇编,成绩总分为100分;请严格按照目标代码的输入输出要求完成,以免造成评判错误。
(3)本次作业仅用正确的测试程序进行考核,但产生的编译器应具有错误处理能力。
【目标代码说明】
(1)PCODE代码的定义可参见教材《编译技术》P458,张莉等,高等教育出版社,Pascal-S指令代码集,可以进行修改,解释执行程序也可以借鉴Pascal-S编译器源码中的解释执行程序,若PCODE代码修改了请相应修改解释执行程序
(2)MIPS代码可以选择基础指令及伪指令,不能选择宏指令; MARS 使用 4.5 版本,请下载修改过的版本,关闭延迟槽,内存配置为默认选项
这个实验水一水吧,工程量太大了,首先还是基于实验一,词法分析,实验二,语法分析的基础上去写。
用到之前的KV.h,error.h,ConstantAndVariable.h,Function.h
编译原理实验:代码生成作业(2)_奶奶滴,为什么不学java的博客-CSDN博客目录Code.h 生成mips中间代码主函数Code.h 生成mips中间代码在之前实验三的基础上改的,有冗余代码,我也不想删了#ifndef __CODE_H__#define __CODE_H__#include <ConstantAndVariable.h>#include <Function.h>#include <KV.h>#include <algorithm>#include <ctype.h&..https://blog.csdn.net/weixin_48456383/article/details/124743494 编译原理实验:代码生成作业(3)_奶奶滴,为什么不学java的博客-CSDN博客作者:lmx希冀平台可提交版本#include <ctype.h>#include <stdlib.h>#include <string.h>#include <algorithm>#include <fstream>#include <iostream>#include <map>#include <vector>#include<queue>using namespa
https://blog.csdn.net/weixin_48456383/article/details/124743528