【发布时间】:2021-08-03 22:27:20
【问题描述】:
我正在查看汇编代码,发现一条我不明白其用途的指令 - ldr PC, r1。据我了解,这会执行内存跳转到 r1 指向的地址中包含的值。为什么不使用 B 或 BL 指令? LDR 指令会停止流水线吗?出于纯粹的好奇,如果管道没有停止会发生什么?
【问题讨论】:
-
我假设那是
ldr pc, [r1]。因此,它是通过内存中的指针进行的间接跳转。b和bl都做不到。 -
可能是 mov pc, r1, one or other ldr pc, [r1]
-
@Jester 抱歉,如果这有什么改变,我错过了最后的零 -
ldr PC, r1, 0 -
我在switch case编译中经常看到,与offset和shift一起使用。
-
@KRol 你的意思是
ldr pc, [r1, #0]?同ldr pc, [r1]