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中

posted @ 2014-01-22 14:44  LOSER Z  阅读(5759)  评论(0编辑  收藏  举报