• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 數據處理指令之:RSC帶進位的翻轉減指令

    數據處理指令之:RSC帶進位的翻轉減指令

    作者: 時間:2013-09-13 來源:網絡 收藏

    6.8 指令

    1.指令的編碼格式

    (Reverse Subtract with Carry)操作指令,從寄存器shifter_operand>中減去Rn>表示的數值,再減去寄存器CPSR中C條件標志位的反碼(NOT(Carry Flag)),并將結果保存到目標寄存器Rd>中,并根據指令的執行結果設置CPSR中相應的標志位。

    本文引用地址:http://www.czjhyjcfj.com/article/257069.htm

    指令的編碼格式如圖6.9所示。

    圖6.9 指令的編碼格式

    2.指令的語法格式

    RSC{cond>}{S} Rn>,Rn>,shifter_operand>

    ① cond>

    為指令編碼中的條件域。它指示指令在什么條件下執行。當cond>忽略時,指令為無條件執行(cond=AL(Alway))。

    ② S>

    詳見SUB指令。

    ③ Rd>

    指定目標寄存器。

    ④ Rn>

    指定第一個源操作數寄存器。

    ⑤ shifter_operand>

    使用的通用尋址模式確定第二個源操作數。它影響指令編碼格式中的I(bit[25])位和shifter_operand(bits[11∶0])位。

    注意

    當指令的編碼格式中I位等于0,并且移位操作數shifter_operand中bit[7]和bit[4]也都等于1,則指令并非RSC指令。詳情請參閱系統結構參考手冊。

    3.指令操作的偽代碼

    指令操作的偽代碼如下面程序段所示。

    If ConditionPassed{cond} then

    Rd= shifter_operand-Rn-NOT{C Flag}

    If S==1 and Rd==r15 then

    CPSR=SPSR

    Else if S==1 then

    N flag=Rd[31]

    Z flag=if Rd==0 then 1 else 0

    C flag=NOT BorrowFrom{shifter_operand - Rn -NOT{C Flag}}

    V flag=OverflowFrom{shifter_operand - Rn -NOT{C Flag}}

    4.指令舉例

    【例6.8】RSC指令舉例。

    下面程序使用RSC指令實現求64位數值的負數。

    RSBS R2,R0,#0;

    RSC R3,R1,#0;



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 合作市| 中牟县| 宽城| 连江县| 武宁县| 苏尼特右旗| 普兰县| 承德市| 吐鲁番市| 平凉市| 宣恩县| 海淀区| 大庆市| 上饶市| 邢台市| 鄂伦春自治旗| 镶黄旗| 泸州市| 响水县| 尼木县| 扶沟县| 鹤壁市| 汶川县| 会理县| 太和县| 襄垣县| 新蔡县| 舒兰市| 九龙县| 博爱县| 衡山县| 曲水县| 准格尔旗| 剑川县| 祁连县| 昌都县| 苗栗市| 台北县| 蓬莱市| 綦江县| 建水县|