ARM中有两种程序跳转方式:
- 跳转指令;
- 向PC写入目标地址值;
跳转指令
通过跳转指令,可以实现从当前指令向前或者向后32MB的地址空间跳转(一般来讲也足够了,基本上没有需要使用汇编语言写超过32MB程序的场景),总共有4种跳转指令:
- B:跳转指令;
- BL:带返回的跳转指令;
- BLX:带返回和状态切换的跳转指令;
- BX:带状态切换的跳转指令;
带X的指令中的状态切换指的ARM状态和Thumb状态的切换,我们不关注,所以这些指令暂不介绍。
B指令和BL指令
B{
L}{
cond} <target_address>
// 其中signed_immed_24是编译器根据指令中的target_address计算出来的
if C