88 lines
1.9 KiB
Plaintext
88 lines
1.9 KiB
Plaintext
# MIPS32 诊断测试脚本
|
||
# 用于排查 ADD 指令不工作的问题
|
||
|
||
echo "========================================"
|
||
echo " MIPS32 ADD 指令诊断测试"
|
||
echo "========================================"
|
||
echo ""
|
||
|
||
# 创建机器并加载平台
|
||
echo "【步骤 1】创建机器和加载平台"
|
||
mach create "MIPS-Diagnostic"
|
||
machine LoadPlatformDescription @platforms/cpus/mips32_simple.repl
|
||
|
||
# 显示CPU类型
|
||
echo "【步骤 2】验证 CPU 类型"
|
||
sysbus.cpu
|
||
|
||
# 设置初始状态
|
||
echo ""
|
||
echo "【步骤 3】设置初始状态"
|
||
cpu PC 0x80000000
|
||
cpu A0 5
|
||
cpu A1 3
|
||
cpu V0 0
|
||
|
||
# 显示设置后的寄存器
|
||
echo ""
|
||
echo "【步骤 4】验证初始寄存器值"
|
||
echo " PC ="
|
||
cpu PC
|
||
echo " A0 ="
|
||
cpu A0
|
||
echo " A1 ="
|
||
cpu A1
|
||
echo " V0 ="
|
||
cpu V0
|
||
|
||
# 写入 ADD 指令:add $v0, $a0, $a1
|
||
echo ""
|
||
echo "【步骤 5】写入 ADD 指令到内存"
|
||
echo " 地址: 0x80000000"
|
||
echo " 指令: 0x00851020 (add v0, a0, a1)"
|
||
sysbus WriteDoubleWord 0x80000000 0x00851020
|
||
|
||
# 验证指令已写入
|
||
echo ""
|
||
echo "【步骤 6】验证指令已写入内存"
|
||
echo " 读取 0x80000000 ="
|
||
sysbus ReadDoubleWord 0x80000000
|
||
|
||
# 执行一条指令
|
||
echo ""
|
||
echo "【步骤 7】执行一条指令"
|
||
cpu Step 1
|
||
|
||
# 显示执行后的状态
|
||
echo ""
|
||
echo "【步骤 8】检查执行后的寄存器"
|
||
echo " PC ="
|
||
cpu PC
|
||
echo " (预期: 0x80000004)"
|
||
echo ""
|
||
echo " A0 ="
|
||
cpu A0
|
||
echo " (预期: 0x5)"
|
||
echo ""
|
||
echo " A1 ="
|
||
cpu A1
|
||
echo " (预期: 0x3)"
|
||
echo ""
|
||
echo " V0 ="
|
||
cpu V0
|
||
echo " (预期: 0x8 = 5 + 3)"
|
||
|
||
echo ""
|
||
echo "========================================"
|
||
echo " 诊断结果分析"
|
||
echo "========================================"
|
||
echo "如果 V0 = 0x8 且 PC = 0x80000004:"
|
||
echo " ✓ ADD 指令工作正常"
|
||
echo ""
|
||
echo "如果 V0 = 0x0:"
|
||
echo " ✗ ADD 指令未执行或寄存器未更新"
|
||
echo ""
|
||
echo "如果 PC = 0x80000000:"
|
||
echo " ✗ CPU 没有前进(指令未执行)"
|
||
echo "========================================"
|