ARM7TDMI-S指令集详解:核心操作与架构介绍

需积分: 16 30 下载量 13 浏览量 更新于2024-07-17 收藏 1.28MB PDF 举报
ARM指令集是针对ARM7TDMI-S架构的详细规格文档,由ARMDDI0084D提供,主要涵盖了ARM架构的指令集设计。这份文档深入解析了ARM指令的各个方面,以便开发者理解和利用这些指令进行高效编程。 第4章“InstructionSetSummary”首先概述了ARM指令的格式,以表格形式展示了不同类型的指令编码,包括操作码、长度和可能的功能。这有助于理解每个指令的基本结构和用途。 接下来的部分重点讲解了条件字段(4.2),这是决定指令执行与否的关键元素,它控制着根据处理器状态(程序状态寄存器,PSR)执行指令的条件。 “Branch and Exchange (BX)”(4.3)和“Branch and Branch with Link (B, BL)”(4.4)介绍了一般和带链接的分支指令,它们在程序控制流中起着关键作用,可以实现函数调用和循环控制。 “Data Processing”(4.5)涵盖了诸如加法、减法、移位等基本数据处理指令,对于执行算术和逻辑操作至关重要。然后,“PSR Transfer (MRS, MSR)”(4.6)涉及处理器状态寄存器的读写操作,用于管理和调整CPU的运行模式。 乘法和乘加指令“Multiply (MUL) and Multiply-Accumulate (MLA)”(4.7)以及其长版本“Multiply Long (MULL) and Multiply-Accumulate Long (MLAL)”(4.8)提供了高性能的数值计算能力,对于处理浮点和整数乘法非常关键。 “Single Data Transfer (LDR, STR)”(4.9)和“Halfword and Signed Data Transfer”(4.10)讨论了单字节、半字和有符号数据的加载和存储操作,这对于数据交换和内存访问非常实用。 “Block Data Transfer (LDM, STM)”(4.11)允许一次性处理多个数据项,提高了内存操作的效率。随后,“Single Data Swap (SWP)”(4.12)演示了如何交换单个字节或半字的数据。 软件中断(4.13)"SWI"允许在程序运行时触发系统级事件,而“Coprocessor Data Operations (CDP)”(4.14)则涉及与协处理器之间的数据交互。 此外,文档还涉及了通过指令集进行的协处理器数据操作(如LDC, STC)和寄存器传输(MRC, MCR),这些操作对于使用特定功能单元如DSP或MMU时必不可少。 最后,“Undefined Instruction”(4.17)解释了遇到未定义指令时的行为,而“InstructionSetExamples”(4.18)提供了实际指令集使用的示例,帮助开发人员在实践中应用所学知识。 总结来说,这份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