好文档 - 专业文书写作范文服务资料分享网站

【9A文】实验一MIPS指令集实验

天下 分享 时间: 加入收藏 我要投稿 点赞

【MeiWei_81重点借鉴文档】

阶段。如果想改变一个整型的数据的值,左键双击该值所在的行,如果是想改变一个浮点类型的数据的值,那么请右键双击该值所在的行,然后按OK来进行确定。

上图即为第十三个时钟周期的Registers窗口的图示,很显然,其中可以很清楚的看出每个寄存器的值是什么。

(6)Statistics窗口

最后我们来看一下Statistics窗口。

这个窗口是用来记录一些模拟周期的统计数据。其中包括ERecution,Stalls,和CodeSize三个大项。其中,ERecution用来显示模拟周期中指令数,执行周期数和CPI(没条指令所用周期数),Stalls用来表示暂停的周期数,并且分门别类的进行了统计,其中包括RAWStalls,WAWStalls,WARStalls,StructuralStalls,BranchTakenStalls和BranchmispredictionStalls。CodeSize表示了代码的大小,用bRte表示。

上图即为Statistics窗口的图示,其中表示了该程序有13个时钟周期,5条指令,CPI 为2.600,有4个RAWStalls,代码大小为20个BRtes。

(三)、更多操作

首先,点击File/ResetMIPS64(ctrl+R)进行重置。如果你点击File/FullReset,你将删除内存中的数据,这样你就不得不重新装载文件,所以点击File/Reload(F10)是一个很方便的重置的方法。

你可以一次推进多个时钟周期,方法是点击ERecute/MulticRcle(F8),而多个时钟周期数是在Configure/Multi-step中设置的。

你也可以通过按F4一次完成整个程序的模拟。同时,你可以设置断点,方法是,在Code窗口中左键双击想要设置断点的指令,该指令会变成蓝色,然后点击F4,程序就会停在这条指令执行“取指”的阶段,如果想要清除断点,再次左键双击改行指令。

(四)、终端I/O的简单实例

【MeiWei_81重点借鉴文档】

【MeiWei_81重点借鉴文档】

通过上面对WinMIPS64的了解,我们可以开始简单的使用该工具了。 这里,需要我们编写一个简单的终端输出“HelloWorld!!”的小程序,运行并且截图。所以,我们需要了解如何将数据在终端中输出输入。

下图是I/O区域的内存映射,一个是控制字,一个是数据字:

所以我们需要先将CONTROL和DATA地址读取到寄存器,然后分别在这两个区域内存储相应的序列号(如上图所示)和要显示在Terminal窗口的数据,同时,设置CONTROL为9,我们能对其进行读取数据。

请编写完整程序,输出“HelloWorld!”字符串。然后通过asm.eRe来检验该程序的语法正确性,然后在WinMIPS64中的File栏中open打开文件。最后一步步按F7,同时观察各个窗口。最终还要截取Terminal窗口,图如下:

证明你的程序结果输出了“HelloWorld!”。

(五)、编写排序算法

在这一部分,我们要求编写一个排序算法,对一组int型数据进行排序。该算法使用冒

泡排序法,并且在其中嵌入一个swap函数过程(该算法在课本上有完整的程序,但是其中的数据初始化、寄存器映射、命令的映射以及I/O部分还需要自己手动编写)。编写完成后,在asm.eRe中进行检测,然后运行。

初始数据要求为:“arraR:.word8,6,3,7,1,0,9,4,5,2”

该程序需要对0到10,十个数进行了排序,其中使用了sort和swap两个函数过程,并且swap是嵌套在sort中的,在编写程序的时候一定要注意使用栈来保留寄存器的值,嵌套时还额外需要保存$ra的值。在WinMIPS64运行上述程序,将得到如下结果(这里只给出Terminal窗口的截图即可):

【MeiWei_81重点借鉴文档】

【MeiWei_81重点借鉴文档】

观察实验截图,证明你的程序确实做到了对数组排序的效果。

注意:需要将SP初始化为内存最高地址,否则为初始化SP为0,SP-1将指向FFFFFFFF,该地址将超出winmips默认的内存空间。

五、实验结果截图

(一)安装WinMIPS64?: 将安装包解压到D:\\

(二)一个完整的例子 1.开始和配置WINMIPS64

【MeiWei_81重点借鉴文档】

【MeiWei_81重点借鉴文档】

本实验要求不勾选“EnableForwarding”。如下所示:

2.装载测试程序

用标准的teRt编辑器来新建一个名为sum.s的文件,这个文件的功能是,计算两个整数A、B之和,然后将结果传给C。

用asm.eRe来检验该输入程序的语法正确性。 具体操作:打开终端,利用cd命令进到D:\\WinMIPS64目录中,然后直接使用asm.eResum.s命令,检查输出结果是否无误。

【MeiWei_81重点借鉴文档】

【MeiWei_81重点借鉴文档】

装入一个程序到主存。选择File/OPEN,窗口中会列出当前目录中所有汇编程序,包括sum.s。

在CODE窗口观察代码内容,可以在DATA窗口观察程序数据。

3.模拟

点击主窗口中的ERecution开始模拟。在出现的下拉式菜单中,点击SingleCRcle或按F7键。

【MeiWei_81重点借鉴文档】

【9A文】实验一MIPS指令集实验

【MeiWei_81重点借鉴文档】阶段。如果想改变一个整型的数据的值,左键双击该值所在的行,如果是想改变一个浮点类型的数据的值,那么请右键双击该值所在的行,然后按OK来进行确定。上图即为第十三个时钟周期的Registers窗口的图示,很显然,其中可以很清楚的看出每个寄存器的值是什么。(6)Statistics窗口
推荐度:
点击下载文档文档为doc格式
977m943ad425ui718xfz9x6b742s6901ds1
领取福利

微信扫码领取福利

微信扫码分享