• ARM学习笔记2——分支跳转指令


    一、Arm指令条件码和条件助记符

    二、跳转指令B

      1、作用

        跳转指令B使程序跳转到指定的地址执行程序(跳转范围是PC-32MB到PC+32MB)

      2、指令格式(注:B后面如果有条件,条件就是紧跟在B后面,没有空格

        B{<condition>} <target_address>

      3、参数说明

        3.1、<condition>:它指示指令在什么条件下执行,可省略

        3.2、<target_address>:指令跳转的目标地址,指令通过下面的方法计算目标地址:

          A、将24位带符号的补码立即数符号扩展到32位

          B、将扩展后的32位立即数左移两位

          C、将得到的值加到PC寄存器中,即得到跳转的目标地址

    三、带连接的跳转指令BL

      1、作用

         带连接的跳转指令BL将下一条指令的地址拷贝到r14(即返回地址连接寄存器LR)寄存器中,然后跳转到指定地址运行程序。

      2、语法格式

         BL{<condition>} <target_address> 

      3、参数说明同B指令

     

    四、带状态切换的跳转指令BX

      1、作用

        使程序跳转到指令中指定的参数Rm指定的地址执行程序

      2、语法格式

        BX{<condition>} <Rm>

      3、参数说明

        <Rm> 包含跳转指令的目标地址,

    五、带状态切换的连接跳转指令BLX

      1、作用

        用于使程序跳转到Thumb状态或从Thumb状态返回,该指令为无条件执行指令,并用分支寄存器的最低位来更新CPSR中的T位,将返回地址写入到连接寄存器LR中。

      2、语法格式

         BLX{<condition>} <target_address>

      3、参数说明

        <target_address>为指令的跳转目标地址,该地址根据以下规则计算

        A、将指令指定的24位偏移量进行符号扩展,形成32位立即数

        B、将结果左移两位

        C、位H(bit[24])加到结果地址的第一位(bit[1])

        D、将结果累加到程序计数器PC中

  • 相关阅读:
    python 模块基础介绍
    python 函数基础介绍
    性能测试总结与分享材料
    徒手撸一个简单的RPC框架
    【springcloud】一文带你搞懂API网关
    一次非常有意思的sql优化经历
    MySQL数据库之互联网常用分库分表方案
    后端开发应该掌握的Redis基础
    权限管理模块设计
    基于redis的分布式锁的分析与实践
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3529754.html
Copyright © 2020-2023  润新知