图2.5 内存窗口
图2.6 “内存修改”对话框
在该“内存修改”对话框中,地址框最开始显示的是被双击的单元的地址,用户可以直接修改该地址。在新值框中输入新值,然后点击按钮“修改”,模拟器就会把新值写入内存中相应的单元。新值的格式必须与所选的数据类型和格式一致。
“前地址”与“后地址”按钮分别将当前地址减少和增加一个数据长度(字节数),并
显示当前地址所指定单元的内容。“前地址”和“后地址”用于连续修改一片的内存数据。“显示”按钮用于显示当前地址所指单元的内容。在修改地址后,点击该按钮就可以显示内存单元的内容。
6. 统计窗口
该窗口显示模拟器统计的各项数据。如下所示。 (非流水方式下,没有该窗口)
汇总:
执行周期总数:0 ID段执行了0条指令
硬件配置:
内存容量:4096 B 加法器个数:1 执行时间(周期数):6 乘法器个数:1 执行时间(周期数)7 除法器个数:1 执行时间(周期数)10 定向机制:不采用
停顿(周期数): RAW停顿:0 占周期总数的百分比:0% 其中:
load停顿:0 占所有RAW停顿的百分比:0% 分支/跳转停顿:0 占所有RAW停顿的百分比:0% 浮点停顿:0 占所有RAW停顿的百分比:0% WAW停顿:0 占周期总数的百分比:0% 结构停顿:0 占周期总数的百分比:0% 控制停顿:0 占周期总数的百分比:0% 自陷停顿:0 占周期总数的百分比:0% 停顿周期总数:0 占周期总数的百分比:0%
分支指令:
指令条数:0 占指令总数的百分比:0% 其中:
分支成功:0 占分支指令数的百分比:0% 分支失败:0 占分支指令数的百分比:0%
load/store指令: 指令条数:0 占指令总数的百分比:0% 其中: load:0 占load/store指令数的百分比:0% store:0 占load/store指令数的百分比:0%
浮点指令:
指令条数:0 占指令总数的百分比:0%
其中: 加法:0 占浮点指令数的百分比:0% 乘法:0 占浮点指令数的百分比:0% 除法:0 占浮点指令数的百分比:0%
自陷指令:
指令条数:0 占指令总数的百分比:0% 7. 断点窗口
断点一般是指指定的一条指令,当程序执行到该指令时,会中断执行,暂停在该指令上。在本模拟器中,断点可以设定在某条指令的某一个流水段上(如果是在流水方式下)。当该指令执行到相应的流水段时,会中断执行。
断点窗口列出当前已经设置的所有断点,每行一个。每行由3部分构成:地址(16进制),流水段名称,符号指令。如图2.7所示。(在非流水方式下,“段”没有意义)
图2.7 断点窗口
该窗口上方有四个按钮:添加、删除、全部删除、修改。 ? 添加
单击“添加”,会弹出小对话框“设置断点”,在“地址”框中输入断点的十六进制地址,在“段”的下拉框中选择在哪个流水段中断(非流水方式下,不需要该操作,下同),单击“确定”即可。 ? 删除
选中某个断点(单击断点列表中相应的一项),单击“删除”,则该断点被清除。 ? 全部删除
单击“全部删除”,所有断点都将被清除。 ? 修改
选中某个断点,单击“修改”,会弹出小对话框“设置断点”,在“地址”框中输入断点的地址,在“段”的下拉框中选择在哪个流水段中断,单击“确定”即可将原断点修改为新设断点。
三、 MIPSsim的菜单
1. 文件菜单
文件菜单如下所示:
(1) CPU复位
将模拟器中CPU的状态复位为默认值。 (2) 全部复位
将整个模拟器的状态复位为默认值。模拟器启动时,也是将状态设置为默认值。 (3) 载入程序
将被模拟程序载入模拟器的内存。被模拟程序可以是汇编程序(.s文件),也可以是汇编后的代码(.bin文件)。点击该菜单后,系统将弹出“载入”对话框,选择要载入的文件,然后点击“打开”。如果是.s文件,系统会对该文件进行汇编。若汇编过程无错误,则将产生的二进制代码载入至模拟器的内存;若有错误,则报告错误信息。如果是.bin文件,则直接将该文件的内容载入到模拟器内存。
被载入程序在内存中连续存放,其起始地址默认为0。该起始地址可以从“代码”菜单中的“载入起始地址”来查看和修改。修改时,如果输入的地址不是4的整数倍,模拟器会自动将其归整为4的整数倍。 (4)退出
退出模拟器。 2. 执行菜单
该菜单提供了对模拟器执行程序进行控制的功能。在下面的执行方式中,除了单步执行,当遇到断点或者用户手动中止(用“中止”菜单项)时,模拟器将立即暂停执行。
在流水方式下,执行菜单如下所示:
在非流水方式下,执行菜单如下所示:
(1)单步执行一个周期
执行一个时钟周期,然后暂停。其快捷键为F7。该菜单仅出现在流水方式下。 (2)撤销上一个周期
模拟器回退一个时钟周期,即恢复到执行该周期之前的状态。其快捷键为F8。该菜单仅出现在流水方式下。 (3)执行多个周期
执行多个时钟周期,然后暂停。点击该菜单后,系统会弹出一个小对话框,由用户指定要执行的周期的个数。该菜单仅出现在流水方式下。 (4)连续执行
从当前状态开始连续执行程序,直到程序结束或遇到断点或用户手动中止。 (5)执行到…
点击该菜单项后,系统会弹出一个“设定终点”小对话框,由用户指定此次执行的终点,即在哪条指令的哪个流水段暂停。点击“确定”后,模拟器即开始执行程序,直到到达终点位置或遇到断点或用户手动中止。所输入的终点地址将被归整为4的整数倍。 (6) 中止
点击该菜单项后,模拟器会立即暂停执行。当模拟器执行程序出现长期不结束的状况时,可用该菜单强行使模拟器停止执行。 (7)单步执行一条指令
执行一条指令,然后暂停。该指令的地址由当前的PC给出。其快捷键为F7。该菜单仅出现在非流水方式下。 (8)撤销上一条指令
模拟器回退一条指令,即恢复到执行该指令之前的状态。其快捷键为F8。该菜单仅出现在非流水方式下。 (9) 执行多条指令
执行多条指令,然后暂停。点击该菜单项后,系统会弹出一个小对话框,由用户指定要执行的指令的条数。
3. 内存菜单
该菜单下有3项:显示,修改,符号表。 (1)显示
该菜单项用于设置显示内存的值的数据类型与格式。点击该菜单项后,系统会弹出“内存显示”对话框,如图3.1所示。在选定所要的数据类型与格式后,单击“确定”按钮,内存窗口中的数据就会按指定的数据类型与格式显示。
图3.1 内存显示窗口