【问题标题】:ARM frame pointer register (r11) keeps changing spotaneouslyARM 帧指针寄存器 (r11) 自发不断变化
【发布时间】: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


【解决方案1】:

这不太可能是硬件错误,因为它会使处理器完全无法使用。调试器更有可能正在使用帧寄存器并且没有正确显示它。另外,我在 ARM 指令集中没有看到 cpy 指令,所以我想知道在您使用的工具集中它会转换成什么。

【讨论】:

  • cpy 与 mov 相同。我会解决这个问题。
猜你喜欢
  • 2021-04-13
  • 1970-01-01
  • 2016-12-10
  • 2014-07-29
  • 1970-01-01
  • 2017-09-10
  • 2015-01-25
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多