新聞中心

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://butianyuan.cn/article/201611/317690.htm

寫在前面:本篇文章旨在大致介紹下ARM指令集的相關(guān)內(nèi)容,這里也同時提供一個有詳細(xì)解釋和用例的待書簽的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

帶進(jìn)位的加法指令。

3.5 SUB

減法指令。

3.6 RSB

逆向減法指令。

3.7 SBC

帶進(jìn)位的減法指令。

3.8 RSC

帶進(jìn)位的逆向減法指令。

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

帶擴(kuò)展的循環(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)閉