【MIPSsim使用说明】连载一:

一、 启动模拟器
双击MIPSsim.exe,即可启动该模拟器。MIPSsim是在Windows操作系统上运行的程序,它需要用.NET运行环境。如果你的机器没有该环境,请先下载和安装“Microsoft .NET Framework 2.0 版可再发行组件包”。

模拟器启动时,自动将自己初始化为默认状态。所设置的默认值为:
 所有通用寄存器和浮点寄存器为全0;
 内存清零;
 流水寄存器为全0;
 清空时钟图、断点、统计数据;
 内存大小为4096字节;
 载入起始地址为0;
 浮点加法、乘法、除法部件的个数均为1;
 浮点加法、乘法、除法运算延迟分别为6、7、10个时钟周期;
 采用流水方式;
 不采用定向机制;
 不采用延迟槽;
 采用符号地址;
 采用绝对周期计数。

当模拟器工作在非流水方式下(配置菜单中的“流水方式”前没有“√”号)时,下面叙述中有关流水段的内容都没有意义,应该忽略之。
二、MIPSsim的窗口
在流水方式下,模拟器主界面中共有7个子窗口,它们是:代码窗口、寄存器窗口、流水线窗口、时钟周期图窗口、内存窗口、统计窗口和断点窗口。每一个窗口都可以被收起(变成小图标)、展开、拖动位置和放大/缩小。当要看窗口的全部内容时,可以将其放大到最大。
在非流水方式下,只有代码窗口、寄存器窗口、内存窗口和断点窗口。

1. 代码窗口
代码窗口给出内存中代码的列表,每条指令占一行,按地址顺序排列。每行有5列(当全部显示时):地址、断点标记、指令的机器码、流水段标记和符号指令。如图2.1所示。

图2.1 代码窗口

图2.1 代码窗口

图中不同抹色的行代表相应的指令所处的执行段。黄色代表IF段,绿色代表ID段,红色代表EX段,青色代表MEM段,棕色代表WB段。

该窗口中各列的含义如下:
 地址:以16进制的形式给出。内存是按字节寻址的,每条指令占4个字节。当采用符号地址时,会在相应的位置给出汇编程序中出现的标号。
 断点标记:如果在该指令处设有断点,则显示相应的标记。断点标记的形式为B.X(X为段名),表示该断点是设置在该指令的“X”段。例如,若某行的断点标记为“B.EX”,则表示在该指令的EX段设置了断点。
当模拟器工作在非流水方式下时,断点的标记为B。
 机器码:该行所对应的指令的十六进制机器码。若该行无指令,则仅仅显示4字节数据;
 流水段标记:表示当该指令正在执行时,它在当前周期该指令所处的流水段。当模拟器工作在非流水方式下时,它没有意义。
 符号指令:机器代码所对应的符号指令。

在该窗口中选中某行(用鼠标左键单击),然后再点击鼠标右键,就会弹出菜单:设置断点,清除断点,它们分别用于在所选指令处设置断点和清除断点。
 设置断点
选择(点击)要设断点的指令点击右键“设置断点”,弹出“设置断点”小对话框,在“段”的下拉框中选择断点所在的流水段(在非流水方式下,不存在该下拉框),单击“确定”即可。
 清除断点
选择(点击)指令点击右键“清除断点”,则设置在该指令处的断点被删除。

2. 寄存器窗口
寄存器窗口显示MIPSsim模拟器中的寄存器的内容。共有4组寄存器:通用寄存器、浮点寄存器、特殊寄存器和流水寄存器,分为4栏来显示。每一栏下分别有各自的数据格式选项,如图2.2所示。

图2.2 寄存器窗口

图2.2 寄存器窗口

(1) 通用寄存器
MIPS64有32个64位通用寄存器:R0,R1,…,R31。它们被简称为GPRs(General-Purpose Registers),有时也被称为整数寄存器。R0的值永远是0。
通过数据格式选项,可以选择显示的格式是十进制还是十六进制。

(2) 浮点寄存器
共有32个64位浮点数寄存器:F0,F1,…,F31。它们被简称为FPRs(Floating-Point Registers)。它们既可以用来存放32个单精度浮点数(32位),也可以用来存放32个双精度浮点数(64位)。存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。

(3) 特殊寄存器
特殊寄存器有4个:
 PC:程序计数器(32位);
 LO:乘法寄存器的低位;
 HI:乘法寄存器的高位;
 FCSR:浮点状态寄存器。

(4) 流水寄存器
 IF/ID.IR:流水段IF与ID之间的指令寄存器;
 IF/ID.NPC:流水段IF与ID之间的下一指令程序计数器;
 ID/EX.A:流水段ID与EX之间的第一操作数寄存器;
 ID/EX.B:流水段ID与EX之间的第二操作数寄存器;
 ID/EX.Imm:流水段ID与EX之间的立即数寄存器;
 ID/EX.IR:存放从IF/ID.IR传过来的指令;
 EX/MEM.ALUo:流水段EX与MEM之间的ALU计算结果寄存器;
 EX/MEM.IR:存放从ID/EX.IR传过来的指令;
 MEM/WB.LMD:流水段MEM与WB之间的数据寄存器,用于存放从存储器读出的数据;
 MEM/WB.ALUo:存放从EX/MEM.ALUo传过来的计算结果;
 MEM/WB.IR:存放从EX/MEM.IR传过来的指令。

除了流水寄存器外,其他寄存器都可以修改。只要双击某寄存器所在的行,系统就会弹出一个小对话框。该对话框显示了该寄存器原来的值。在新值框中填入新的值,然后点击“保存”,系统就会将新值写入该寄存器。

--电子创新网--
粤ICP备12070055号