用户界面

EduMIPS64 的图形用户界面借鉴了 WinMIPS64 的用户界面。事实上,除了一些菜单外,主窗口是完全相同的。

EduMIPS64 主窗口由一个菜单栏和六个框架组成,显示仿真的不同方面。此外,还有一个状态栏,它有双重作用,一是在点击内存单元和寄存器时显示它们的内容,二是在模拟已启动但未选择verbose(详细)模式时通知用户模拟器正在运行。

状态栏还显示 CPU 状态。它可以显示以下四种状态之一:

  • READY(准备就绪) CPU 未执行任何指令(未加载程序)。

  • RUNNING(运行中) CPU 正在执行一系列指令。

  • STOPPING(停止中) CPU 已找到终止指令,正在执行流水线中已有的指令,然后终止执行。

  • HALTED(关闭) CPU 已停止:程序刚刚运行完毕。

请注意,CPU 状态与模拟器状态不同。模拟器可能会执行若干次 CPU 循环,然后停止执行,允许用户检查内存和寄存器:在这种状态下,在 CPU 循环之间,CPU 保持 RUNNINGSTOPPING 状态。一旦 CPU 进入 HALTED 状态,如果不重新加载程序(同一程序或不同程序),用户就无法运行任何 CPU 循环。

更多详情请参见以下章节。

菜单栏

菜单栏包含六个菜单:

文件

文件菜单包含有关打开文件、重置或关闭模拟器、写入跟踪文件的菜单项。

  • 打开… 打开一个对话框,允许用户选择要打开的源文件。 打开一个对话框,允许用户选择要打开的源文件。

  • 打开最近的文件 显示模拟器最近打开的文件列表,用户可以从中选择要打开的文件。

  • 重置 重置模拟器,保留已加载的文件,但重置执行。 重置模拟器,保留已加载的文件,但重置执行。

  • 写入 Dinero 跟踪文件 以 xdin 格式将内存访问数据写入文件。

  • 退出 关闭模拟器。

Write Dinero Tracefile…*(写入 Dinero Tracefile…*)菜单项只有在执行了整个源文件并已结束时才可用。

执行

执行(Execute)菜单包含有关仿真执行流程的菜单项。

  • 单周期 执行一个仿真步骤

  • 运行 开始执行,当模拟器执行到SYSCALL 0(或类似指令),或BREAK指令,或用户点击停止菜单项(或按 F9 键)时停止。

  • 多周期 执行一些仿真步骤。执行的步数可通过设置对话框进行配置。

  • 停止 当模拟器处于运行或多循环模式时停止执行,如前所述。

该菜单仅在加载源文件且模拟尚未结束时可用。*停止*菜单项仅在运行或多循环模式下可用。

请注意,在更新用户界面时模拟器的运行速度会减慢。如果想快速执行较长(数千周期)的程序,请禁用在多步执行中图形与 CPU 同步选项。

配置

配置菜单为自定义 EduMIPS64 的外观和行为提供了便利。

  • 设置… 打开设置” 对话框,本章后续章节将对其进行介绍;

  • 更改语言 允许用户更改用户界面使用的语言。这一更改会影响图形用户界面的各个方面,从框架标题到在线手册和警告/错误信息。

当模拟器处于运行” 或多循环” 状态时,”设置…”菜单项不可用。”运行” 或多循环”模式时,”设置…” 菜单项不可用,因为可能会出现竞争冒险 (Race Condition)。

工具

该菜单只包含一个项目,用于调用 Dinero Frontend 对话框。

  • Dinero Frontend… 打开 Dinero Frontend 对话框。

在未执行程序且执行结束之前,此菜单不可用。

窗口

该菜单包含与窗口操作有关的项目。

Tile 对可见窗口进行平铺,使一排中的窗口不超过三个。它会尽量扩大每个窗口所占的空间。

其他菜单项只是切换每个窗口的状态,使其可见或最小化。

帮助

该菜单包含与帮助相关的菜单项。

  • 手册… 显示帮助对话框。

  • 关于我们… 显示一个可爱的对话框,其中包含项目贡献者的姓名及其角色。

窗口

图形用户界面由七个窗口组成,其中六个默认可见,一个(输入/输出窗口)隐藏。

循环

周期窗口显示执行流程在一段时间内的演变情况,显示每个时间段内哪些指令处于流水线中,以及这些指令处于流水线的哪个阶段。

寄存器

寄存器窗口显示每个寄存器的内容。左键单击寄存器可在状态栏中看到其十进制(带符号)值,双击寄存器可弹出对话框,允许用户更改寄存器的值。

统计数据

统计窗口显示程序执行的一些统计数据。

请注意,在最后一个执行周期内,循环计数器不会递增,因为最后一个执行周期不是一个完整的 CPU 周期,而是一个伪周期,其唯一的任务是从流水线中移除最后一条指令,并递增已执行指令的计数器。

流水线

流水线窗口显示流水线的实际状态,显示哪条指令处于哪个流水线阶段。不同的颜色突出显示不同的流水线阶段。

内存

内存窗口显示内存单元的内容,以及来自源代码的标签和注释。与寄存器一样,内存单元的内容也可以双击修改,点击内存单元会在状态栏中显示其十进制值。 第一列显示内存单元的十六进制地址,第二列显示单元值。其他列显示源代码中的其他信息。

代码

代码窗口显示内存中加载的指令。第一列显示指令的地址,第二列显示指令的十六进制表示。其他列显示源代码中的其他信息。

输入/输出

输入/输出窗口为用户提供了一个界面,以查看程序通过 SYSCALL 4 和 5 创建的输出。实际上,它并不用于输入,因为 SYSCALL 3 试图从标准输入读取时会弹出一个对话框,但未来的版本将包括一个输入文本框。

对话框

EduMIPS64 使用对话框以多种方式与用户交互。以下是最重要对话框的摘要:

设置

在设置对话框中可以对模拟器的各个方面进行配置。 单击OK(确定)”按钮将保存选项,而单击Cancel(取消)(或直接关闭窗口)将忽略更改。如果要保存更改,请不要忘记点击确定”。

主设置选项卡允许配置转发和多循环模式下的步数。

行为选项卡允许启用或禁用解析阶段的警告。”多步执行中图形与 CPU 同步选项选中后,将使窗口的图形状态与模拟器的内部状态同步。这意味着模拟速度会变慢,但在模拟过程中会有明确的图形反馈。如果选中该选项,”循环间隔选项将影响模拟器在开始一个新循环之前需要等待多少毫秒。 这些选项只有在使用 运行或执行菜单中的多循环选项运行模拟时,这些选项才会生效。

最后两个选项设置了同步异常发生时模拟器的行为。如果选中屏蔽同步异常选项,模拟器将忽略任何除以零或整数溢出异常。 如果选中同步异常时终止选项,模拟器将在同步异常发生时停止模拟。请注意,如果同步异常被屏蔽,即使选中了终止选项,也不会发生任何情况。如果未屏蔽异常,也未选中终止选项,则会弹出对话框,但对话框关闭后模拟将继续进行。如果未屏蔽异常且选中终止选项,则会弹出对话框,关闭对话框后模拟将立即停止。

最后一个选项卡可以更改用户界面的外观。其中包括更改不同流水线阶段相关颜色的选项、选择内存单元显示为长数值还是双数值的选项以及设置用户界面字体大小的选项。

需要注意的是,用户界面与字体大小之间的比例关系远非完美,但足以让模拟器在高分辨率显示器(如 4K)上使用。

Dinero 前端

通过 Dinero Frontend 对话框,可以向 DineroIV 进程提供程序执行时内部生成的跟踪文件。第一个文本框中是 DineroIV 可执行文件的路径,第二个文本框中必须是 DineroIV 的参数。

关于 DineroIV 缓存模拟器的更多信息,请参阅 ~cite{dinero-web}。

下部包含 DineroIV 进程的输出,你可以从中获取所需的数据。

帮助

通过帮助(Help)对话框可以查看在线手册,该手册是本文档的 HTML 副本。

命令行选项

有四个命令行选项。下面的列表对它们进行了说明,长名称用圆括号括起来。长名称和短名称的使用方法相同。

  • -v (–version) 打印模拟器版本并退出。

  • -h (–help) 打印命令行选项的帮助信息,然后退出。

  • -f (–file) filename 在模拟器中打开`filename`。

  • -r (–reset) 将存储的配置重置为默认值

  • -d (–debug) 进入调试模式

  • -hl (–headless) 在无头模式下运行 EduMIPS64(无 gui)

-debug 的作用是激活调试模式。在该模式下,会出现一个新的窗口,即调试窗口,显示 EduMIPS64 的内部活动日志。它对最终用户没有用处,仅供 EduMIPS64 开发人员使用。