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中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM