ARM base instruction -- b bl bx blx

本文详细介绍了ARM指令集中关于分支和跳转的相关指令,包括'B', 'BL', 'BX'和'BLX'等。这些指令用于程序流程控制,如无条件跳转、条件跳转、函数调用及状态切换。'BL'指令适用于局部跳转,而'BX'和'BLX'则支持更广泛的跳转范围,其中'BLX'还涉及处理器状态的切换。此外,文章还提到了指令的寻址方式、返回地址保存以及对LR寄存器的使用。

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

    'B{cond}  <target_address> '分支指令 - 类似于goto

        {} 代表可有可无,<>代表缺少就报错,cond为指令执行的条件码,target_address为指令跳转的目标地址。

    'BL{cond} <target_address> '相对跳转指令 - 类似于函数调用

        跳转范围限制±32M,PC=PC±32M

        【L】决定由硬件自动保存下调指令的返回地址到lr,用于函数调用

        // B和BL指令均可跳转到指令中的目标地址。-地址相关码/地址无关码

    'BX{cond} <Rm>' 绝对跳转,4G范围
        BLX
        【X】带状态切换的分支跳转

    b     无条件跳转,不考虑回来的问题,不会根据LR的值进行返回
    bl    带链接的无条件跳转; 在跳转时会把下一条指令的地址装载到lr寄存器中,以方便cpu最终能回来
    bx      带状态切换的无条件跳转
    blx      带链接和状态切换的无条件跳转
    b     loc_地址
    bne, beq

    注1:bl指令的偏移量不是相对于正在执行的那条指令,而是相对于预取指令-三级流水线
    注2:bl命令,最大寻址空间为±32M,访问其他内存通过ldr指令
    注3:进入子函数,通过栈保存返回地址+通用寄存器的值    
    
    b.w            # .w的意思是告诉编译器,这条指令采用32bit编码
    bne.n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值