# 处理器回归测试

本目录包含用于全面回归测试不同 Y86-64 模拟器的 Perl 脚本。

## 测试类型

| 脚本 | 说明 |
| --- | --- |
| `optest.pl` | 测试每种独立指令类型 |
| `jtest.pl` | 在不同条件下测试所有跳转类型 |
| `ctest.pl` | 测试不同的流水线控制组合 |
| `htest.pl` | 测试大量可能的冒险情形；会运行 864 个以上测试，耗时较长 |

## 运行测试

### 可选参数

| 参数 | 说明 |
| --- | --- |
| `-s simfile` | 使用 `simfile` 作为模拟器（默认 `../pipe/psim`） |
| `-i` | 测试 `iaddq` 指令 |

### Makefile 变量

```make
SIM=simfile
TFLAGS=<传给测试脚本的参数>
```

例如，执行：

```sh
make SIM=../pipe/psim TFLAGS=-i
```

该命令测试包含 `iaddq` 的流水线模拟器。默认 PIPE 实现尚未实现 `iaddq`，因此对默认版本执行该测试会失败。

## 失败案例分析

当测试程序发现模拟结果错误时，会将相关 `.ys` 文件保留在目录中。若失败案例为 `bad-test.ys`，可先构建目标代码：

```sh
make bad-test.yo
```

随后可使用模拟器分析该案例；GUI 版本适合定位执行过程中的问题。

标准测试仅检查功能性错误，即处理器模拟结果是否与 ISA 级模拟预测的结果不同。
