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