ARM汇编代码无法将寄存器值保存到另一个寄存器中?

时间:2017-02-27 16:24:36

标签: assembly arm

我在这里有一种奇怪的行为。 我编写了一个简单的函数,它将特定地址的值放入两个寄存器中。它看起来像这样:

.globl GetCurrentCounter
GetCurrentCounter:
  push {lr}
  bl GetTimerAddress
  mov r2,r0
  ldrd r0,r1,[r2,#4]
  pop {pc}

只有它不起作用,但是如果我省略了将r0分配给r2并直接执行ldrd的步骤,那么它可以工作:

.globl GetCurrentCounter
GetCurrentCounter:
  push {lr}
  bl GetTimerAddress
  ldrd r0,r1,[r0,#4]
  pop {pc}

我不明白为什么会这样。

GetTimerAddress函数:

.globl GetTimerAddress
GetTimerAddress:
  ldr r0,=0x20003000
  mov pc,lr

0 个答案:

没有答案