yanchicao-yiwei-slt

This commit is contained in:
2026-03-13 13:54:49 +08:00
parent 362a5c9b5d
commit 2ca0aa2bd9
5466 changed files with 2225687 additions and 187 deletions

View File

@@ -0,0 +1,87 @@
# 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 "========================================"

View File

@@ -0,0 +1,85 @@
:name: MIPS32 Instruction Verification
:description: 验证 MIPS32 指令翻译是否正常工作
$name?="MIPS32-InsnTest"
using sysbus
mach create $name
machine LoadPlatformDescription @platforms/cpus/mips32_simple.repl
echo ""
echo "=========================================="
echo "MIPS32 指令验证测试"
echo "=========================================="
echo ""
# 测试 1: ADD
echo "【测试 1】ADD 指令: add v0, a0, a1"
cpu PC 0x80000000
cpu A0 0x00000005
cpu A1 0x00000003
cpu V0 0x00000000
sysbus WriteDoubleWord 0x80000000 0x00851020
cpu Step 1
echo " 执行后 V0 ="
cpu V0
echo " (预期: 8)"
echo ""
# 测试 2: ADDI
echo "【测试 2】ADDI 指令: addi v0, a0, 100"
cpu PC 0x80000000
cpu A0 0x00000050
cpu V0 0x00000000
sysbus WriteDoubleWord 0x80000000 0x20820064
cpu Step 1
echo " 执行后 V0 ="
cpu V0
echo " (预期: 180)"
echo ""
# 测试 3: AND
echo "【测试 3】AND 指令: and v0, a0, a1"
cpu PC 0x80000000
cpu A0 0xFF00FF00
cpu A1 0xF0F0F0F0
cpu V0 0x00000000
sysbus WriteDoubleWord 0x80000000 0x00851024
cpu Step 1
echo " 执行后 V0 ="
cpu V0
echo " (预期: 0xF000F000 = 4026593024)"
echo ""
# 测试 4: LUI
echo "【测试 4】LUI 指令: lui v0, 0x1234"
cpu PC 0x80000000
cpu V0 0x00000000
sysbus WriteDoubleWord 0x80000000 0x3C021234
cpu Step 1
echo " 执行后 V0 ="
cpu V0
echo " (预期: 0x12340000 = 305397760)"
echo ""
# 测试 5: LUI + ORI
echo "【测试 5】LUI + ORI 组合: 加载 0x12345678"
cpu PC 0x80000000
cpu V0 0x00000000
sysbus WriteDoubleWord 0x80000000 0x3C021234
sysbus WriteDoubleWord 0x80000004 0x34425678
cpu Step 1
echo " LUI 后 V0 ="
cpu V0
echo " (预期: 0x12340000)"
cpu Step 1
echo " ORI 后 V0 ="
cpu V0
echo " (预期: 0x12345678 = 305419896)"
echo ""
echo "=========================================="
echo "测试完成!"
echo "如果所有结果与预期一致,说明指令翻译正常工作"
echo "=========================================="

View File

@@ -0,0 +1,33 @@
:name: MIPS32 Test
:description: MIPS32 CPU基础测试脚本
$name?="MIPS32-Test"
using sysbus
mach create $name
# 加载平台描述文件
machine LoadPlatformDescription @platforms/cpus/mips32_simple.repl
# 显示UART分析器
showAnalyzer uart
# 设置CPU寄存器初始值用于测试
macro reset
"""
# 设置PC到内存起始地址
cpu PC 0x80000000
# 设置栈指针
cpu SP 0x8FFFFFFF
# 显示寄存器状态
cpu IsHalted false
"""
runMacro $reset
# 可以在这里手动设置寄存器值进行测试
# 例如:
# cpu A0 0x12345678
# cpu V0 0xABCDEF00

View File

@@ -0,0 +1,12 @@
// SPARC32 简单测试平台
// 包含一个 SPARC CPU (LEON3) 和内存
// 用于调试 translate.c
cpu: CPU.Sparc @ sysbus
cpuType: "LEON3"
mem: Memory.MappedMemory @ sysbus 0x80000000
size: 0x10000000
uart: UART.LiteX_UART @ sysbus 0x10000000
-> cpu@0