ARM指令集之跳转指令

本文介绍了ARM指令集中用于程序跳转的指令,包括B和BL指令,以及如何实现长跳转。B指令无返回地跳转,而BL指令在跳转前保存PC值以实现子程序调用。长跳转则允许在更大的地址空间内任意跳转,通常借助ADR和LDR等伪指令实现。
摘要由CSDN通过智能技术生成


ARM中有两种程序跳转方式:

  1. 跳转指令;
  2. 向PC写入目标地址值;

跳转指令

通过跳转指令,可以实现从当前指令向前或者向后32MB的地址空间跳转(一般来讲也足够了,基本上没有需要使用汇编语言写超过32MB程序的场景),总共有4种跳转指令:

  1. B:跳转指令;
  2. BL:带返回的跳转指令;
  3. BLX:带返回和状态切换的跳转指令;
  4. BX:带状态切换的跳转指令;

带X的指令中的状态切换指的ARM状态和Thumb状态的切换,我们不关注,所以这些指令暂不介绍。

B指令和BL指令

B{
   L}{
   cond} <target_address>

// 其中signed_immed_24是编译器根据指令中的target_address计算出来的
if C
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值