【发布时间】:2014-03-12 02:24:03
【问题描述】:
我正在使用硬件调试器逐行调试 ARM 程序集。
我看到的很奇怪,帧指针寄存器(r11)一直在变化,即使指令不管它。
例如,在执行以下行时:
mov r4, r1
mov r5, r2
r11 寄存器从 0x00100ee8 变为 0x00100eec(不断增加 4)
是某种硬件错误还是有一些我不知道的逻辑?
【问题讨论】:
-
你确定那不是 r15 (PC) 吗?
-
您正在使用(并信任)调试器来获取有关 r11 的此信息,或者您已通过其他方式确认?
-
fp不是那么重要。如果编译器知道它在叶函数中并且设置了某些编译选项,则编译器可以使用它。调试器可以以各种方式实现步进。我不确定它是如何在 ARM 上完成的。一些 CPU 将更改lr等效项以返回到已知的 debug 位置。给出的上下文太少了。
标签: assembly arm cpu-registers