# 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 "========================================"