ARM指令集快速参考手册

需积分: 14 3 下载量 99 浏览量 更新于2024-10-29 收藏 159KB PDF 举报
"ARM指令速查手册.pdf 是一本关于ARM架构处理器指令集的参考文档,提供了快速查询不同指令的功能和用法。手册包含了各种指令的表格,如条件字段、寻址模式、操作数等,方便用户理解和使用ARM指令。手册中的关键元素包括表格解释、条件码、地址模式、操作数、标志更新以及特定的指令操作。" ARM指令集是广泛应用于嵌入式系统和移动设备的精简指令集计算(RISC)架构,由ARM公司设计。手册中的关键知识点包括: 1. **条件字段({cond})**: ARM指令集支持多种条件执行,如无条件(AL或NONE)、零标志(EQ)、不等于(NE)、负(MI)、非负(PL)等。这使得程序可以根据运算结果的状态来决定是否执行特定指令。 2. **寻址模式(a_mode2, a_mode2P, a_mode3, a_mode4L, a_mode4S, a_mode5)**: ARM指令集支持多种寻址方式,例如立即寻址、寄存器间接寻址、基址加偏移量寻址等。其中,Post-indexed寻址在数据传输后更新基址寄存器,Blockload或Stackpop则涉及批量数据加载和堆栈弹出。 3. **操作数(Oprnd2)和标志更新(S)**: 指令可以有多个操作数,S位指示是否更新条件标志。例如,S为1时,指令执行后会根据结果更新条件标志,如零标志(Z)、进位标志(C)、负标志(N)和溢出标志(V)。 4. **特殊标志(C*, V*)**: 在v4及更早版本的架构中,某些指令执行后的标志值是不可预测的。Q标志用于表示溢出(Overflow),在块存储或堆栈操作中具有特殊含义,当发生溢出时总是更新,且可通过MRS和MSR指令读取和重置。 5. **常量和旋转(immed_8r, immed_8*4)**: ARM指令集允许使用8位常量进行数据操作,并可以右旋转或左移位来形成32位常量。 6. **基址更新({!})**: 带有感叹号的指令会在数据传输后更新基址寄存器,这对于内存操作非常有用,如加载和存储指令。 7. **寄存器列表(<reglist>)**: 用于指定一组连续的寄存器,例如在多寄存器操作中。 8. **ARM架构版本(§)**: 手册可能涵盖了不同的ARM架构版本,每个版本可能有其特定的指令集扩展和特性。 此手册对于开发者、系统架构师和嵌入式系统工程师来说是宝贵的参考资料,它提供了快速查找和理解ARM指令的途径,有助于高效编写和调试代码。通过深入学习和实践,读者能够熟练掌握ARM指令的使用,从而更好地利用ARM处理器的性能。
2021-08-30 上传
原作者:宛城布衣。 本文件已移除PDF签名,如内容有误,欢迎大家指正。 目录 前言 i 目录 I ARM7TDMI(-S)指令集及汇编1 ARM 处理器寻址方式2 寄存器寻址2 立即寻址2 寄存器偏移寻址2 寄存器间接寻址3 基址寻址3 多寄存器寻址4 堆栈寻址4 块拷贝寻址5 相对寻址5 指令集介绍7 ARM 指令集7 指令格式7 第 2 个操作数7 #immed_8r 7 Rm8 Rm,shift8 条件码9 ARM 存储器访问指令 11 LDR 和 STR 11 LDM 和 STM14 SWP 17 ARM 数据处理指令19 数据传送指令20 MOV 20 MVN 20 算术逻辑运算指令20 ADD 20 SUB21 RSB 21 ADC 21 SBC 21 RSC 22 AND 22 ORR22 EOR22 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII BIC 23 第 I 页常用 ARM 指令集及汇编 Ver:1010 比较指令23 CMP 23 CMN23 TST24 TEQ24 乘法指令25 MUL25 MLA25 UMULL25 UMLAL26 SMULL 26 SMLAL 26 ARM 跳转指令27 B27 BL27 BX 27 ARM 协处理器指令28 CDP28 LDC29 STC 29 MCR30 MRC30 ARM 杂项指令31 SWI 31 MRS 32 MSR 33 ARM 伪指令34 ADR 35 ADRL35 LDR36 NOP37 Thumb 指令集39 Thumb 指令集与 ARM 指令集的区别 39 Thumb 存储器访问指令 40 LDR 和 STR 41 PUSH 和 POP 43 LDMIA 和 STMIA 43 Thumb 数据处理指令 45 数据传送指令46 MOV 46 MVN 46 NEG47 算术逻辑运算指令47 ADD 47 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 第 II 页常用 ARM 指令集及汇编 Ver:1010 SUB48 ADC 49 SBC 49 MUL50 AND 50 ORR50 EOR51 BIC 51 ASR51 LSL52 LSR 52 ROR53 比较指令53 CMP 53 CMN54 TST54 Thumb 跳转指令 55 B 55 BL55 BX 55 Thumb 杂项指令 56 SWI 56 Thumb 伪指令 57 ADR 57 LDR57 NOP58 伪指令59 符号定义伪指令59 GBLA、GBLL、GBLS 59 LCLA、LCLL、LCLS60 SETA、SETL、SETS 61 RLIST61 CN 62 CP62 DN、SN62 FN63 数据定义伪指令63 LTORG64 MAP64 FIELD 65 SPACE66 DCB 66 DCD 和 DCDU67 DCDO 67 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 第 III 页常用 ARM 指令集及汇编 Ver:1010 DCFD 和 DCFDU68 DCFS 和 DCFSU68 DCI69 DCQ 和 DCQU69 DCW 和 DCWU 70 报告伪指令70 ASSERT 70 INFO 71 OPT 71 TTL 和 SUBT 72 汇编控制伪指令73 IF、ELSE 和 ENDIF73 MACRO 和 MEND 74 WHIL 和 WEND 75 杂项伪指令76 ALIGN 77 AREA78 CODE16 和 CODE32 79 END 80 ENTRY80 EQU 81 EXPORT 和 GLOBAL 81 IMPORT 和 EXTERN 82 GET 和 INCLUDE 83 INCBIN83 KEEP83 NOFP 84 REQUIRE 84 PEQUIRE8 和 PRESERVE8 84 RN 84 ROUT85 ARM 伪指令86 ADR 86 ADRL86 LDR86