news 2026/4/3 6:05:18

B 与 BL 区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
B 与 BL 区别

ARM 汇编 B 与 BL 的区别详解

核心区别

  • 功能B是无条件(或有条件)分支,仅改变程序流;BL(Branch with Link)在跳转前会把“下一条指令地址”写入R14(LR,链接寄存器),用于子程序调用后的返回。
  • 返回机制:使用BL调用后,通常用MOV PC, LRBX LR返回;B不保存返回地址,不能用于标准函数调用返回。
  • 典型用途B常用于段间跳转、条件分支、长循环或“永不返回”的入口;BL用于函数/子程序调用。

编码与寻址要点

  • 语法B{L}{}。是否保存返回地址由L决定; 为可选条件码(如EQ、NE),因此存在BEQ/BNE等条件分支。
  • 目标地址计算:指令中携带24 位有符号立即数,先符号扩展为32 位,再左移 2 位(按字对齐),与PC相加得到目标地址;有效跳转范围约为±32 MB(2^25 字节)。
  • PC 取值点:ARM 流水线使得取值时PC 通常指向当前指令地址 + 8;因此 BL 保存的是“下一条指令地址”(当前指令地址 + 4 的位置)。

典型用法与代码片段

  • 使用BL调用函数并在函数尾部返回:
    bl func ; 调用 func,返回地址自动写入 LR ; ... 其他代码 ... func: ; 若函数内还会调用别的函数,先保存 LR PUSH {R4-R7, LR} ; ... 函数体 ... POP {R4-R7, PC} ; 等价于 MOV PC, LR,函数返回
  • 使用B实现循环或永不返回的分支:
    loop: ; ... 循环体 ... b loop ; 跳回 loop(常见“死循环”写法) b reset ; 复位入口常用 B,因在 MMU/向量表早期阶段更稳妥
  • 条件分支示例(与CMP配合):
    cmp r0, #0 beq zero_handler bne non_zero_handler

建议

  • LR 覆盖:在BL调用的子函数中若再调用别的函数,需先保存 LR(入栈),否则返回地址会被覆盖;函数尾部用POP {…, PC}BX LR返回。
  • 长跳转需求B/BL是相对跳转,范围约±32 MB;若需跨更大地址空间,使用LDR PC, =label(文字池/绝对地址加载)或BX/BLX Rm等方式。
  • 状态切换:仅BL/BX/BLX涉及指令集状态切换;BLX会根据目标地址最低位bit[0]自动在ARM/Thumb间切换,BX LR同样可用于从 Thumb 状态返回。
  • 条件执行B/BL都支持条件码(如BEQ/BNE),可与CMP/TST等指令组合实现高效分支。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 21:55:50

GPT-5.2与Gemini 3.0 Pro深度对比及第三方API接入实践指南

在人工智能技术飞速发展的当下,大模型的迭代速度持续加快,OpenAI推出的GPT-5.2与Google的Gemini 3.0 Pro作为当前行业内的顶尖模型,成为开发者和企业选型的核心关注对象。对于开发者而言,除了官方接口外,第三方API接入…

作者头像 李华
网站建设 2026/3/13 21:30:26

泛函分析与偏微分方程(三):弱拓扑、凸集与线性算子

1 弱拓扑与弱收敛 定义 1.1(弱拓扑) 设 EEE 为赋范线性空间,E∗E^*E∗ 为其连续对偶。 弱拓扑 σ(E,E∗)\sigma(E,E^*)σ(E,E∗) 是使得所有 f∈E∗f\in E^*f∈E∗ 都连续的最弱拓扑。 等价地:在点 x0x_0x0​ 的一组弱邻域基可取为 U(x0;f1,…,fm,ε)={ x∈E: ∣fi(x−x0…

作者头像 李华
网站建设 2026/3/30 9:09:59

二叉树的最近公共祖先-python-递归

题目:思路:递归遍历:从根节点出发,递归遍历左、右子树,目标是找到 p 或 q;回溯 “判断”—— 确定 LCA:递归遍历完左右子树后,会得到两个结果(left:左子树找到…

作者头像 李华
网站建设 2026/3/28 2:24:16

20、VXLAN BGP EVPN 网络的外部连接与多站点互联技术解析

VXLAN BGP EVPN 网络的外部连接与多站点互联技术解析1. 以太网边缘端口保护在传统以太网边缘端口,BPDU guard、root guard 或 storm control 可提供保护。这些工具能实现清晰且受保护的边界划分,防止不良故障传播,确保网络的稳定性。2. 外网和…

作者头像 李华
网站建设 2026/3/30 5:40:04

网吧WiFi为何流畅?专业部署与家用网络的核心差异

各位有没有好奇过网吧的WiFi?在众多公共场所的无线网络中,网吧的WiFi体验可以说是出乎意料的。在人员那么密集的情况下,还能达到这种稳定性。究竟是怎么做到的呢?今天,就让我们来探讨下,网吧的WiFi部署方案…

作者头像 李华
网站建设 2026/4/2 22:54:21

12月中下旬计算机、教育等优质学术会议大合集分享!

​ ↑↑↑ 了解更多详细会议信息、投稿优惠 请添加会议老师 2025年计算机视觉与数字艺术国际学术会议 (ICCVDA 2025) 2025 International Conference on Computer Vision and Digital Art 稳定EI检索、SPIE独立出版! IEEE Fellow加持&…

作者头像 李华