Files
simulation_core/scripts/single-node/mips32_diagnostic_test.resc

88 lines
1.9 KiB
Plaintext
Raw Permalink Normal View History

2026-03-13 13:54:49 +08:00
# 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 "========================================"