### PCSpim 教程详解
#### 一、PCSpim 概述
**PCSpim** 是一款广泛使用的 **MIPS 汇编语言模拟器**,它可以帮助学习者理解 MIPS 架构下的指令集及其工作原理。通过模拟 MIPS 处理器的行为,用户可以在不使用实际硬件的情况下编写、测试和调试 MIPS 汇编代码。
#### 二、安装与配置 PCSpim
##### 1. 下载与安装
- 从指定网址(http://sourceforge.net/projects/spimsimulator/files/)下载 **PCSpim_9.1.4.zip** 文件。
- 解压压缩包后运行 `setup.exe` 完成安装过程。注意本教程假设读者正在使用的是 Windows 7 操作系统,并且安装的是 PCSpim 9.1.4 版本,这也是 CSE 实验室机器上预装的版本。
##### 2. 配置
- 对于 64 位系统的用户,在首次运行 Spim 时可能会遇到缺少异常处理器的问题(通常是因为找不到 exceptions.s 文件)。如果遇到这个问题,可以通过以下步骤解决:
- 打开 Spim 的设置窗口(Simulator -> Settings...)
- 在“Load exception file”部分更改路径至 `C:\Program Files (x86)\PCSpim\exceptions.s`
- 在本次课程中,我们将模拟真实的处理器(“裸机”),包括延迟分支和延迟加载等功能。因此,在设置中需要进行如下配置:
- 打开主菜单中的设置选项(Simulator -> Settings...)
- 按照教程所示进行配置。特别需要注意的是必须准确设置所有参数,否则可能会导致模拟器出现奇怪的行为或无法运行代码。
#### 三、编写并运行第一个程序
##### 1. 编写 MIPS 汇编代码
- 使用文本编辑器(推荐 Vim 或 Emacs)编写以下简单的 MIPS 汇编代码,并将其保存为 `simple.s` 文件:
```mips
# simple.s
.text
.globl _start
_start:
# 一些简单的算术运算
addiu $t0, $0, 3 # 将 0 + 3 的结果存入寄存器 t0
addiu $t1, $0, 4 # 将 0 + 4 的结果存入寄存器 t1
addu $t2, $t0, $t1 # 将 t0 + t1 的结果存入寄存器 t2
sll $t3, $t2, 2 # 将寄存器 t2 的值左移 2 位 (等同于乘以 4)
# 退出程序
addiu $v0, $0, 10 # 准备退出 (系统调用 10)
syscall # 退出程序
```
这段代码实现了简单的加法和左移操作,并最终通过系统调用结束程序执行。
##### 2. 在 Spim 中打开并运行程序
- 打开 Spim 软件,通过 File -> Open 选项加载刚刚保存的 `simple.s` 文件。
- 如果 Spim 提示清除当前程序并重新初始化模拟器,请选择 Yes。
- 此时,Spim 主界面会分为四个部分:
- **寄存器区**:显示每个寄存器的内容,向下滚动可查看浮点寄存器。
- **文本段**:展示已加载到模拟器中的代码。每一行代表一条指令,从左到右依次显示指令地址、指令的十六进制表示形式以及对应的汇编指令。
通过以上步骤,用户可以成功地在 PCSpim 中编写、加载并运行自己的 MIPS 汇编代码。这不仅有助于深入理解 MIPS 指令集的工作原理,也为后续更复杂的程序设计打下坚实的基础。