两个指令为
B
BL
指令的格式 B{条件} 目标地址。
例子:
CMP R1,#0
BEQ label
这就是 带条件的跳转了。
B label , 就是直接跳转了,不返回。
BL,
BL在跳转的时候,会自动的将PC的值 保存到R14中,当返回时, 手动的将R14的值 ,给到PC指针就可以。
疑问: PC不是往前走两个位置吗? 解释: PC确实是后两个指令,但是将当前指令的下一条指令地址给R14.
截图:
COND : 不用解释了。
L : 是BL还是B
101 : 不懂。
最后面为指令跳转的偏移量,所以 BL指令 跳转是有界限的。
可以跳转 2的23次方的指令,一个指令是4个字节。所以一共是 32M的大小。
如果超过了 32M, 就要使用 LDR指令。
举例:
LDR PC ,=dest
dest 是一个 函数的标号。