在尝试调试这个基本的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程序,所有组合都显示相同的结果,似乎完全忽略了该寄存器的内容。
1条答案
按热度按时间llycmphe1#
有趣的是,删除和安装整个工具链再次修复了这个问题。
不能击败旧的“你有没有试过关闭和再次打开”...