• 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中

  • 相关阅读:
    ThinkPHP之APP_DEBUG给我带来的问题
    yii框架部署
    论文翻译之--- 软件设计师怎样使用标记来帮助提醒和重新查找
    初始html5,遇到的第一个问题
    几种进入mysql的方法
    百度经验---一些生活常见问题的解决
    myeclipse背景色设置遇到的问题
    linux学习(二)-----Linux 的目录结构、远程登录、vi和vim
    linux学习(一)-----vm、centos安装
    springboot核心技术(四)-----Docker、数据访问、自定义starter
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3529754.html
Copyright © 2020-2023  润新知