现在的位置: 首页 > 综合 > 正文

ARM的分支指令

2013年12月05日 ⁄ 综合 ⁄ 共 564字 ⁄ 字号 评论关闭
  在ARM中有两种方式可以实现程序的跳转,一种是使用分支指令直接跳转,另一种则是直接向PC寄存器赋值实现跳转。 分支指令有以下三种:
    分支指令B;
    带链接的分支指令BL;
    带状态切换的分支指令BX。

    分支指令——B指令,该指令跳转范围限制在当前指令的±32M字节地址内(ARM指令为字对齐,最低2位地址固定为0)。指令格式如下:B{cond}    Label
       应用示例:
       B   WAITA ; 跳转到WAITA标号处
       …
       WAITA  …

       带链接的分支指令——BL指令适用于子程序调用,使用该指令后,下一条指令的地址被拷贝到R14(即LR) 连接寄存器中,然后跳转到指定地址运行程序。跳转范围限制在当前指令的±32M字节地址内。指令格式如下:
        BL{cond}    Label

        带状态切换的分支指令——BX指令,该指令可以根据跳转地址(Rm)的最低位来切换处理器状态。 ARM指令为字对齐,最低2位地址固定为0。指令格式如下:
        BX{cond}    Rm
例:
 

    ADRL   R0,ThumbFun+1  ;将Thumb程序的入口地址加1存入R0
    BX     R0      ; 跳转到R0指定的地址,
     ;并根据R0的最低位来切换处理器状态

抱歉!评论已关闭.