【发布时间】:2014-03-26 21:22:23
【问题描述】:
在使用 GDB 调试 ARMv7 二进制文件时,除了查看指令长度之外,有没有办法确定 CPU 当前处于哪种模式? (手臂,拇指)
【问题讨论】:
在使用 GDB 调试 ARMv7 二进制文件时,除了查看指令长度之外,有没有办法确定 CPU 当前处于哪种模式? (手臂,拇指)
【问题讨论】:
我正在使用这个小 gdb 脚本来确定 CPSR 字段的当前状态,只需将其放入您的 ~/.gdbinit 文件中,并在需要时调用 arm_isa。
define arm_isa
if ($cpsr & 0x20)
printf "Using THUMB(2) ISA\n"
else
printf "Using ARM ISA\n"
end
end
它检查cpsr中的第5位,表示当前状态并输出使用的ISA。
【讨论】:
CPSR[5] 是 res0,你应该从 @987654325 阅读 PSTATE.P @,并且 SPSR 似乎无法从用户模式访问。