有关ARM跳转指令的问题

2024年11月16日 12:56
有2个网友回答
网友(1):

我不是很清楚
但"还有为什么像这样的跳转指令ldr pc, =label,就能够跳转到0X30000000开始的某个地址处呢,就是为什么标号就是在链接地址 中的呢?而用b bl指令就不会呢?
" 中
LDR PC, xxx 是绝对地址,可以是32位
而 B 及 BL 是相对地址,只有24位
"就是为什么标号就是在链接地址 中的呢",编译联结后是这样的
ldr pc, dword_xxxx
......
dword_xxxx DCD label
在你的码段中会增加上面这句

网友(2):

因为ldr取得是label地址的内容,所以可以直接跳转到指定地址;而b指令是跳转到label所在的地址