B、BL、BX、BLX 和 BXJ

本文详细介绍了ARM指令集中的跳转指令,包括B、BL、BX、BLX及BXJ等指令的功能与用法。解释了如何通过这些指令实现程序流程的控制,并特别强调了它们在不同状态间切换处理器的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

B、BL、BX、BLX 和 BXJ

跳转、带链接跳转、跳转并切换指令集、带链接跳转并切换指令集、跳转并转换到 Jazelle 状态。

语法

1
2
3
op1{cond}{.W} <wbr />label
 
op2{cond} <wbr />Rm

其中:

op1

是下列项之一:

B---跳转。

BL---带链接跳转

BLX---带链接跳转并切换指令集。

op2

是下列项之一:

BX---跳转并切换指令集。

BLX---带链接跳转并切换指令集。

BXJ---跳转并转换为 Jazelle 执行。

cond---是一个可选的条件代码。 cond 不能用于此指令的所有形式。

.W---是一个可选的指令宽度说明符,用于强制要求在 Thumb-2 中使用 32 位 指令。

label---是一个程序相对的表达式。

Rm---是一个寄存器,包含要跳转到的目标地址。

操作

所有这些指令均会引发跳转,或跳转到 label,或跳转到包含在 Rm 中的地址处。 此外:

BL 和 BLX 指令可将下一个指令的地址复制到 lr(r14,链接寄存器)中

BX 和 BLX 指令可将处理器的状态从 ARM 更改为 Thumb,或从 Thumb 更改为 ARM

BLX label 无论何种情况,始终会更改处理器的状态。

BX Rm  BLX Rm 可从 Rm 的位 [0] 推算出目标状态:

如果 Rm 的位 [0] 为 0,则处理器的状态会更改为(或保持在)ARM 状态

如果 Rm 的位 [0] 为 1,则处理器的状态会更改为(或保持在)Thumb 状态。

BXJ 指令会将处理器的状态更改为 Jazelle


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值