'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

ARM base instruction -- b bl bx blx相关推荐

  1. ARM汇编指令(B/BL/BX)

    跳转指令用于实现程序流程的跳转,在 ARM 程序中有两种方法可以实现程序流程的跳转: (1) 使用专门的跳转指令. (2) 直接向程序计数器 PC 写入跳转地址值. 通过向程序计数器 PC 写入跳转地 ...

  2. ARM base instruction -- 简单三级流水线

    /*  * 简单三级流水线  */     IF        Instruction fetch                                            取指      ...

  3. ARM base instruction -- ldm

    /*  * ldm  *  * 批量访问内存,内存中批量读取数据到寄存器  */ LDM|STM {type} 基址寄存器{!}, 寄存器列表{^} ldm{cond} {!} < regist ...

  4. ARM base instruction -- cmn

    /*  * CMN : 比较取负的值  */       (Compare Negative)       CMN{条件}{P}  <op 1>, <op 2>         ...

  5. ARM base instruction -- mul

    /*  * MUL : 乘法  */     (Multiplication)       MUL{条件}{S}  <dest>, <op 1>, <op 2>   ...

  6. ARM base instruction -- swp swpb

    /*  * 存储器和寄存器数据交换:SWP,SWPB  */     swp r0, r1, [r2]    // 将 r2 所指向的存储器中的字数据传送到 r0, 同时将 r1 中的字数据      ...

  7. ARM base instruction -- mla

    /*  * MLA : 带累加的乘法  */       (Multiplication with Accumulate)       MLA{条件}{S}  <dest>, <op ...

  8. ARM base instruction -- eor

    /*  * EOR : 逻辑异或  */     (logical Exclusive OR) EOR{条件}{S}  <dest>, <op 1>, <op 2> ...

  9. 全新ARM base PocketPC 2003 Emulator Beta 已登場。

    (華) 作日一直在忙于debug一個用.NET CF v1.0编写的访问XML Web Service程序:看來挺简单...但就頭頭碰到难题了...后來才发觉问题不是在于我的程序,而是.NET CF ...

最新文章

  1. 解决mysql“Access denied for user‘root‘@‘IP地址‘“问题
  2. How research looks?
  3. 从决策树学习谈到贝叶斯分类算法
  4. ubuntu双系统导致进windows花屏
  5. html 怎么让tr的css覆盖td的_通达OA上传漏洞之变量覆盖分析
  6. 关于git push报403的问题
  7. 如何提高NLP模型鲁棒性和泛化能力?对抗训练论文串讲
  8. Win64下通过JNI(C++)创建jvm
  9. oracle数据导出工具sqluldr2安装及使用
  10. mysql基础01 创建表 修改表
  11. 小米便签类间关系图绘制方法
  12. 台式计算机硬件组装步骤,【电脑组装教程】DIY台式电脑新手组装+安装系统多图全教程...
  13. 最新县及县以上行政区划代码(截止2014年10月31日)
  14. 360抢票 网站维护中 你的登录被踢了!
  15. 2020年中式烹调师(高级)考试试卷及中式烹调师(高级)模拟考试题
  16. 腾讯云Ubuntu18.04萌新摸索(一)搜狗输入法
  17. 【小程序开发之准备工作】如何开通云开发和CMS内容管理平台
  18. 常见格式浏览器在线预览
  19. 腾讯、移动持续大手笔回购,港股龙头“带动”市场反弹?
  20. 机器学习2 分类与逻辑回归

热门文章

  1. Microsoft SQL Server--导入excel数据
  2. (转)把人类送上月球的女程序员:她的代码跟登月本身一般浪漫...
  3. win10 桌面图标变白方块
  4. Linux 服务器上有挖矿病毒 kdevtmpfsi 处理办法
  5. timestamp(时间戳)
  6. 怎么写单元测试android,Android上的单元测试
  7. LIMS实验室信息管理系统、LIMS系统、样本中心、样本库、报告中心、探针、试剂盒、fish检测、药物管理、基因检测、容器管理、病理诊断、核酸质检、血浆分离、核酸提取、混样处理、文库质检、Axure
  8. 为什么公司愿意录取3年经验的程序员而不是经验5年的自己?
  9. 10招教你建立好团队
  10. 数据降维1:主成分分析法思想及原理(配图版)