a0寄存器在risc-v架构中是否有隐藏的含义?

问题描述 投票:0回答:1

在尝试调试这个基本的 risc-v 汇编代码片段时,gdb 显示不同的寄存器值。

start:
     li a0, 138
     li a1, 138
     mv a2, a0
loop:
     j loop

“信息寄存器 a0”返回“a0 0x20000000 536870912”
“信息寄存器 a1”返回“a1 0x8a 138”
“信息寄存器 a2”返回“a2 0x8a 138”

显然,a0 寄存器保存了从 a0 到 a2 的移动操作所显示的预期值,但为什么 gdb 显示了完全不同的值?

此最小代码在 ESP32-C3 MCU 上执行,通过其集成 JTAG 外设进行调试。

尝试过mingw64的gdb-multiarch、自编译的riscv32-none-elf-gdb, 官方打包的和乐鑫定制的 OpenOCD 程序,所有组合都显示相同的结果,似乎完全忽略了该寄存器的内容。

assembly gdb riscv riscv32
1个回答
0
投票

有趣的是,删除并安装整个工具链再次解决了这个问题。
无法击败旧的“你是否尝试过将其关闭并再次打开”......

© www.soinside.com 2019 - 2024. All rights reserved.