style="display:inline-block;width:300px;height:250px"
data-ad-client="ca-pub-5935214489160196"
data-ad-slot="8007533899">

ARM、Thumb 和 ThumbEE 指令匯總

如下為參考ARM網頁(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ic/Cjafgdih.html ) 有關 ARMThumb ThumbEE 指令的匯總,僅供參考

(除非另有明,否 ThumbEE 指令 Thumb 指令完全相同)

簡單說

頁碼

結搆
ADCADD 帶進位加法,加法 ADDSUBRSBADCSBC RSC 全部
ADR 程序或相寄存器地址(短范 ADR 全部
ADRL 指令 程序或相寄存器地址(中等范 ADRL 指令

x6M

AND 邏輯 ANDORREORBIC ORN 全部
ASR 右移 ASRLSLLSRROR RRX 全部
B BBLBXBLX BXJ 全部
BFCBFI 位域清零和插入 BFC BFI

T2

BIC 位清零 ANDORREORBIC ORN 全部
BKPT

斷點

BKPT

5

BL 帶鏈接的跳 BBLBXBLX BXJ 全部
BLX 帶鏈接的跳,更改指令集 BBLBXBLX BXJ

T

BX ,更改指令集 BBLBXBLX BXJ

T

BXJ ,更改 Jazelle BBLBXBLX BXJ Jx7M
CBZ, CBNZ ,如果(非)零, CBZ CBNZ

T2

CDP 協處理器數據處理操作 CDP CDP2

x6M

CDP2 協處理器數據處理操作 CDP CDP2 5x6M
CHKA 數組 CHKA

EE

CLREX 清除 CLREX Kx6M
CLZ 算前 CLZ 5x6M
CMNCMP 與負值比,比 CMP CMN 全部
CPS 更改理器狀態 CPS

6

DBG

調試

DBGDMBDSB ISB

7

DMBDSB 數據內存屏障,數據衕步屏障 DBGDMBDSB ISB 76M
ENTERXLEAVEX 將狀態更改 ThumbEE 或更改狀態 ThumbEE ENTERX LEAVEX

EE

EOR ANDORREORBIC ORN 全部
HBHBLHBLPHBP 理程序跳,跳到指定理程序 HBHBLHBLP HBP

EE

ISB 指令步屏障 DBGDMBDSB ISB 76M
IT 件判 IT

T2

LDC 載協處理器 LDCLDC2STC STC2

x6M

LDC2 載協處理器 LDCLDC2STC STC2 5x6M
LDM 寄存器 LDM STM 全部
LDR 寄存器指令 訪問指令 全部
LDR 指令 寄存器指令 LDR 指令 全部
LDREX 占加寄存器 LDREX STREX 6x6M
LDREXBLDREXH 占加寄存器,半字 LDREX STREX Kx6M
LDREXD 占加寄存器, LDREX STREX Kx7M
LSLLSR 邏輯左移,邏輯右移 ASRLSLLSRROR RRX 全部
MAR 寄存器移40 位累加器 MAR MRA

XScale

MCR 寄存器移協處理器 MCRMCR2MCRR MCRR2

x6M

MCR2 寄存器移協處理器 MCRMCR2MCRR MCRR2 5x6M
MCRR 寄存器移協處理器 MCRMCR2MCRR MCRR2 5Ex6M
MCRR2 寄存器移協處理器 MCRMCR2MCRR MCRR2 6x6M
MIAMIAPHMIAxy 帶內40 位累加的乘法 MIAMIAPH MIAxy

XScale

MLA 乘加 MULMLA MLS

x6M

MLS MULMLA MLS

T2

MOV MOV MVN 全部
MOVT MOVT

T2

MOV32 指令 32 位常到寄存器 MOV32 指令

T2

MRA 40 位累加器移到寄存器 MAR MRA

XScale

MRC 從協處理器移到寄存器 MRCMRC2MRRC MRRC2 全部
MRC2 從協處理器移到寄存器 MRCMRC2MRRC MRRC2 5x6M
MRS PSR 到寄存器 MRS 全部
MSR 寄存器移PSR MSR 全部
MUL 乘法 MULMLA MLS 全部
MVN 取反移 MOV MVN 全部
NOP 操作 NOPSEVWFEWFI YIELD 全部
ORN 邏輯“或非” ANDORREORBIC ORN

T2

ORR 邏輯“或” ANDORREORBIC ORN 全部
PKHBTPKHTB 合半字 PKHBT PKHTB 6x7M
PLD

預載數據

PLDPLDW PLI 5Ex6M
PLDW 預載入的數據 PLDPLDW PLI

7MP

PLI 預載指令 PLDPLDW PLI

7

PUSHPOP 寄存器推入 (PUSH) 棧彈(POP) 寄存器 PUSH POP 全部
QADDQDADDQDSUBQSUB 和算法 QADDQSUBQDADD QDSUB 5Ex7M
QADD8QADD16QASXQSUB8QSUB16QSAX 并行有符號飽和算法 并行加法和 6x7M
RBIT REVREV16REVSH RBIT

T2

REVREV16REVSH 節順 REVREV16REVSH RBIT

6

RFE 從異常中返回 RFE T2x7M
ROR 向右循移寄存器 ASRLSLLSRROR RRX 全部
RSB 反向 ADDSUBRSBADCSBC RSC 全部
RSC 帶進位反向 ADDSUBRSBADCSBC RSC

x6M

SADD8SADD16SASX 并行有符算法 并行加法和 6x7M
SBC 帶進位的 ADDSUBRSBADCSBC RSC 全部
SBFXUBFX 有符位域提取 SBFX UBFX

T2

SDIV 有符除法 SDIV UDIV 7M7R
SEL APSR GE 標記選擇 SEL 6x7M
SETEND 訪問的端標記 SETEND 6x7M
SEV 置事件 NOPSEVWFEWFI YIELD K6M
SHADD8SHADD16SHASXSHSUB8SHSUB16SHSAX 并行有符均分算法 并行加法和 6x7M
SMC 安全調 SMC

Z

SMLAD 次有符乘加 SMLAD SMLSD 6x7M

(32 <= 32 + 16 x 16 + 16 x 16)

SMLAL 有符乘加 (64 <= 64 +32 x 32) UMULLUMLALSMULL SMLAL

x6M

SMLALxy 有符乘加 (64 <= 64 +16 x 16) SMLALxy 5Ex7M
SMLALD 次有符號長乘加 SMLALD SMLSLD 6x7M

(64 <= 64 + 16 x 16 + 16 x 16)

SMLSD 次有符累加 SMLAD SMLSD 6x7M

(32 <= 32 + 16 x 16 – 16 x 16)

SMLSLD 次有符號長累加 SMLALD SMLSLD 6x7M

(64 <= 64 + 16 x 16 – 16 x 16)

SMMUL 有符高位字乘法 (32 <= TopWord(32 x 32)) SMMULSMMLA SMMLS 6x7M
SMUADSMUSD 有符號雙乘法,并相加或相 SMUAD{X} SMUSD{X} 6x7M
SMULxy 有符乘法 (32 <= 16 x 16) SMULxy SMLAxy 5Ex7M
SMULL 有符乘法 (64 <= 32 x 32) UMULLUMLALSMULL SMLAL

x6M

SMULWy 有符乘法 (32 <= 32 x 16) SMULWy SMLAWy 5Ex7M
SRS 返回狀態 SRS T2x7M
SSAT 有符號飽 SSAT USAT 6x6M
SSAT16 有符號飽和,并行半字 SSAT16 USAT16 6x7M
SSUB8SSUB16SSAX 并行有符算法 并行加法和 6x7M
STC 儲協處理器 LDCLDC2STC STC2

x6M

STC2 儲協處理器 LDCLDC2STC STC2 5x6M
STM 寄存器 LDM STM 全部
STR 寄存器指令 訪問指令 全部
STREX 占存寄存器 LDREX STREX 6x6M
STREXBSTREXH 占存寄存器,字或半字 LDREX STREX Kx6M
STREXD 占存寄存器, LDREX STREX Kx7M
SUB ADDSUBRSBADCSBC RSC 全部
SUBS pc, lr 從異常中返回, SUBS pc, lr T2x7M
SVC(以前 SWI 戶調 SVC 全部
SWPSWPB 寄存器和存( ARM SWP SWPB 所有,x7M
SXTB, SXTB16, SXTH 有符號擴 SXTSXTAUXT UXTA

6

SXTAB, SXTAB16, SXTAH 有符號擴展,加法 SXTSXTAUXT UXTA 6x7M
TBBTBH 表跳、半字 TBB TBH

T2

TEQTST 相等測試測試 TST TEQ 全部
UADD8UADD16UASX 并行算法 并行加法和 6x7M
UDIV 除法 SDIV UDIV 7M7R
UHADD8UHADD16UHASXUHSUB8UHSUB16UHSAX 并行均分算法 并行加法和 6x7M
UMAAL 號長整型乘加累加 UMAAL 6x7M

(64 <= 32 + 32 + 32 x 32)

UMLALUMULL 乘加,乘法 UMULLUMLALSMULL SMLAL

x6M

(64 <= 32 x 32 + 64), (64 <= 32 x 32)

UQADD8UQADD16UQASXUQSUB8UQSUB16UQSAX 并行號飽和算法 并行加法和 6x7M
USAD8 差值的絕對求和 USAD8 USADA8 6x7M
USADA8 差值的絕對求和再累加 USAD8 USADA8 6x7M
USAT 號飽 SSAT USAT 6x6M
USAT16 號飽和,并行半字 SSAT16 USAT16 6x7M
USUB8USUB16USAX 并行算法 并行加法和 6x7M
UXTB, UXTB16, UXTH 號擴 SXTSXTAUXT UXTA

6

UXTAB, UXTAB16, UXTAH 號擴展,加法 SXTSXTAUXT UXTA 6x7M
V* 請參閱Chapter 5 NEON VFP
WFEWFIYIELD 等待事件,等待中,通知 NOPSEVWFEWFI YIELD T26M

體系結搆”列中的條目的含義如下:

全部

這些指令可用於所有版本的 ARM 體系結搆。

5

這些指令可用於 ARMv5T*ARMv6* ARMv7 體系結搆。

5E

這些指令可用於 ARMv5TEARMv6* ARMv7 體系結搆。

6

這些指令可用於 ARMv6* ARMv7 體系結搆。

6M

這些指令可用於 ARMv6-M ARMv7 體系結搆。

x6M

這些指令不可用於 ARMv6-M 體系結搆。

7

這些指令可用於 ARMv7 體系結搆。

7M

這些指令可用於 ARMv7-M 架搆。

x7M

這些指令不可用於 ARMv6-M ARMv7-M 架搆。

7R

這些指令可用於 ARMv7-R 架搆。

7MP

這些指令可用於實現了多重處理擴展的 ARMv7 體系結搆。

EE

這些指令可用於 ARM 體系結搆的 ThumbEE 變體。

J

此指令可用於 ARMv5TEJARMv6* ARMv7 體系結搆。

K

這些指令可用於 ARMv6K ARMv7 體系結搆。

T

這些指令可用於 ARMv4TARMv5T*ARMv6* ARMv7 體系結搆。

T2

這些指令可用於 ARMv6T2 及更高版本的體系結搆。

XScale

這些指令可用於 ARM 體系結搆的 XScale 版本。

Z

此指令僅當執行安全擴展后才可用。