章节列表
之一:ARM汇编语言开篇
之二:C/C++程序生成ARM汇编程序的进程剖析
之三:ARM汇编语言程序结构
之四:ARM处理器的寻址方法
之五:ARM指令集与Thumb指令集
之六:NEON指令集与VFP指令集
写在前面:本篇文章旨在大致介绍下ARM指令集的相关内容,这儿也一起供给一个有具体解说和用例的待书签的PDF版别,便利我们查阅。
ARM指令集详解
指令集是处理器的中心,ARM指令的根本格局如下所示:
opcode {cond}{S}{.W\.N}Rd, Rn{.operand2}
- S:指定是否影响CPSR寄存器的值,如ADDS,SUBS等。
- .W.N:指令宽度说明符。
- Rd:意图寄存器。
- Rn:第一个操作数寄存器。
- operand2:第二个操作数,第二个操作数可所以当即数、寄存器或寄存器位操作,
- cond:履行条件,它的取值如下图所示:
一 跳转指令
1.1 B
跳转指令。
1.2 BL
带链接的跳转指令。
1.3 BX
带状况切换的跳转指令。
二 存储器拜访指令
2.1 LDR
从存储器中加载数据到寄存器。
2.2 STR
存储数据到指定的存储单元。
2.3 LDM
从指定的存储单元加载多个数据到一个寄存器列表。
2.4 STM
将一个寄存器列表的数据的数据存储到指定的存储单元。
2.5 PUSH
将寄存器推入满递减仓库。
2.6 POP
从递减仓库中弹出数据到寄存器。
2.7 SWP
用于寄存器和存储器之间的数据交换。
三 数据处理指令
3.1 MOV
将8位当即数或寄存器里的内容送到方针寄存器中。
3.2 MVN
将8位当即数或寄存器里的内容按位取反后送到方针寄存器中。
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
有符号数除法指令。
3.19 UDIV
无符号数除法指令。
3.20 ASR
算术右移指令。
3.21 AND
逻辑与指令。
3.22 ORR
逻辑或指令。
3.23 EOR
异或指令。
3.24 B%&&&&&%
位铲除指令。
3.25 LSL
逻辑左移指令。
3.26 LSR
逻辑右移指令。
3.27 ROR
循环右移指令。
3.28 RRX
带扩展的循环右移指令。
3.29 CMP
3.30 CMN
3.31 TST
位测验指令。
3.32 TEQ
四 其他指令
4.1 SWI
软中止指令。
4.2 NOP
空操作指令。
4.3 MRS
读状况寄存器指令。
4.4 MSR
写状况寄存器指令。