ARM指令集与Thumb指令详解

4星 · 超过85%的资源 需积分: 9 10 下载量 176 浏览量 更新于2024-08-02 收藏 2.3MB PDF 举报
"本文档是关于ARM指令集和汇编语言的教程,主要涵盖了ARM7TDMI-S内核的相关知识,旨在帮助读者理解和使用ARM微处理器的指令系统。" ARM指令集是ARM微处理器的核心部分,它包含了大量用于处理各种计算任务的指令。ARM7TDMI-S是ARM公司的一种特定内核,它支持两种指令集:ARM指令集和Thumb指令集。 1. **ARM指令集**: ARM指令集以其32位的宽指令格式而闻名,它提供了丰富的运算能力,包括数据处理、控制转移和浮点运算等。ARM指令通常用于执行效率要求较高的场合,如系统初始化、复杂的算法实现等。其指令分类主要包括: - **数据处理指令**:用于进行算术和逻辑运算,例如加法ADD、减法SUB、逻辑与AND、逻辑或ORR等。 - **加载/存储指令**:用于从内存读取数据到寄存器或者将寄存器数据写入内存。 - **分支指令**:用于程序流程控制,如无条件跳转B、条件跳转BNE、BEQ等。 - **浮点运算指令**:如果处理器带有浮点单元(FPU),则可以执行浮点运算,如加法VFMA、减法VFSUB等。 2. **Thumb指令集**: Thumb指令集是ARM为了提高代码密度而设计的一种16位指令集,尽管位宽较小,但仍然保持了相当的处理能力。Thumb指令集在嵌入式系统中广泛应用,因为它可以减少存储需求。Thumb指令集包含的数据处理和控制转移指令与ARM指令集类似,但格式和寻址方式略有不同。Thumb指令集适用于空间有限的场合,如微控制器和嵌入式设备。 3. **寻址方式**: 在ARM指令集中,寻址方式多样,包括立即寻址、寄存器寻址、寄存器偏移寻址、相对寻址等。这些寻址方式允许程序员灵活地访问和操作内存中的数据。 4. **应用场合**: - **ARM指令集**:主要用于需要高性能计算和大内存访问的场合,如操作系统内核、实时系统和复杂算法实现。 - **Thumb指令集**:适合资源受限的系统,如嵌入式设备、微控制器和移动设备,以减少代码大小并提高执行效率。 通过学习和理解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