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

nhn9ugyo  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(61)

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

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

字符串
“info register a0”返回“a0 0x 20000000 536870912”
“info register a1”返回“a1 0x 8a 138”
“info register a2”返回“a2 0x 8a 138”
显然,a0寄存器保存的是从a0到a2的移动操作所显示的预期值,但为什么gdb显示的是一个完全不同的值?
这些最小的代码在ESP 32-C3 MCU上执行,并通过其集成的JTAG外设进行调试。
尝试mingw 64的gdb-multiarch,自编译的riscv 32-none-elf-gdb,官方打包的和Espressif的自定义OpenOCD程序,所有组合都显示相同的结果,似乎完全忽略了该寄存器的内容。

llycmphe

llycmphe1#

有趣的是,删除和安装整个工具链再次修复了这个问题。
不能击败旧的“你有没有试过关闭和再次打开”...

相关问题