新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Android的ARM匯編語言系列之五:ARM指令集與Thumb指令集

        基于Android的ARM匯編語言系列之五:ARM指令集與Thumb指令集

        作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
        章節(jié)列表

        之一:ARM匯編語言開篇
        之二:C/C++程序生成ARM匯編程序的過程分析
        之三:ARM匯編語言程序結(jié)構(gòu)
        之四:ARM處理器的尋址方式
        之五:ARM指令集Thumb指令集
        之六:NEON指令集與VFP指令集

        本文引用地址:http://www.104case.com/article/201611/317690.htm

        寫在前面:本篇文章旨在大致介紹下ARM指令集的相關(guān)內(nèi)容,這里也同時提供一個有詳細解釋和用例的待書簽的PDF版本,方便大家查閱。

        ARM指令集詳解

        指令集是處理器的核心,ARM指令的基本格式如下所示:

        opcode {cond}{S}{.W.N}Rd, Rn{.operand2}
        • S:指定是否影響CPSR寄存器的值,如ADDS,SUBS等。
        • .W.N:指令寬度說明符。
        • Rd:目的寄存器。
        • Rn:第一個操作數(shù)寄存器。
        • operand2:第二個操作數(shù),第二個操作數(shù)可以是立即數(shù)、寄存器或寄存器位操作,
        • cond:執(zhí)行條件,它的取值如下圖所示:

        一 跳轉(zhuǎn)指令

        1.1 B

        跳轉(zhuǎn)指令。

        1.2 BL

        帶鏈接的跳轉(zhuǎn)指令。

        1.3 BX

        帶狀態(tài)切換的跳轉(zhuǎn)指令。

        二 存儲器訪問指令

        2.1 LDR

        從存儲器中加載數(shù)據(jù)到寄存器。

        2.2 STR

        存儲數(shù)據(jù)到指定的存儲單元。

        2.3 LDM

        從指定的存儲單元加載多個數(shù)據(jù)到一個寄存器列表。

        2.4 STM

        將一個寄存器列表的數(shù)據(jù)的數(shù)據(jù)存儲到指定的存儲單元。

        2.5 PUSH

        將寄存器推入滿遞減堆棧。

        2.6 POP

        從遞減堆棧中彈出數(shù)據(jù)到寄存器。

        2.7 SWP

        用于寄存器和存儲器之間的數(shù)據(jù)交換。

        三 數(shù)據(jù)處理指令

        3.1 MOV

        將8位立即數(shù)或寄存器里的內(nèi)容送到目標(biāo)寄存器中。

        3.2 MVN

        將8位立即數(shù)或寄存器里的內(nèi)容按位取反后送到目標(biāo)寄存器中。

        3.3 ADD

        加法指令。

        3.4 ADC

        帶進位的加法指令。

        3.5 SUB

        減法指令。

        3.6 RSB

        逆向減法指令。

        3.7 SBC

        帶進位的減法指令。

        3.8 RSC

        帶進位的逆向減法指令。

        3.9 MUL

        乘法指令。

        3.10 MLS

        3.11 MLA

        3.12 UMULL

        3.13 UMLAL

        3.14 SMULL

        3.15 SMLAL

        3.16 SMLAD

        3.17 SMLSD

        3.18 SDIV

        有符號數(shù)除法指令。

        3.19 UDIV

        無符號數(shù)除法指令。

        3.20 ASR

        算術(shù)右移指令。

        3.21 AND

        邏輯與指令。

        3.22 ORR

        邏輯或指令。

        3.23 EOR

        異或指令。

        3.24 BIC

        位清除指令。

        3.25 LSL

        邏輯左移指令。

        3.26 LSR

        邏輯右移指令。

        3.27 ROR

        循環(huán)右移指令。

        3.28 RRX

        帶擴展的循環(huán)右移指令。

        3.29 CMP

        3.30 CMN

        3.31 TST

        位測試指令。

        3.32 TEQ

        四 其他指令

        4.1 SWI

        軟中斷指令。

        4.2 NOP

        空操作指令。

        4.3 MRS

        讀狀態(tài)寄存器指令。

        4.4 MSR

        寫狀態(tài)寄存器指令。



        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 紫云| 青浦区| 潍坊市| 夏河县| 顺平县| 恩施市| 邵武市| 绥化市| 阜南县| 夏河县| 常山县| 托里县| 利辛县| 宝兴县| 民乐县| 泰和县| 建水县| 太原市| 乳山市| 合山市| 琼结县| 游戏| 林芝县| 贺兰县| 左贡县| 陕西省| 勐海县| 龙州县| 宁明县| 台前县| 嘉祥县| 南投县| 板桥市| 平江县| 正蓝旗| 大姚县| 交城县| 保靖县| 易门县| 平乡县| 汤阴县|