ARM处理器指令集详解

需积分: 38 4 下载量 175 浏览量 更新于2024-09-26 收藏 492KB PDF 举报
"该文档是关于ARM指令集的中文版,涵盖了ARM处理器的寄存器结构、处理器模式、程序状态寄存器、指令集等多个方面,旨在帮助读者理解和使用ARM架构进行程序开发。" 在ARM指令集中,处理器设计的核心部分包括了寄存器和处理器模式。ARM处理器具有27个寄存器,其中16个在任何时刻都可以被直接访问。这些寄存器的灵活性非常高,不同于其他处理器对特定寄存器的特殊用途限制,例如80x86中的栈指针和6502的累加器。在ARM中,寄存器0至7作为通用寄存器,可以用于各种计算和数据存储。寄存器8至12在进入FIQ(快速中断)模式时会有对应的影子寄存器。寄存器13通常用作操作系统栈指针,但在未使用栈的情况下,也可以临时用作其他用途,但需确保之后恢复其栈指针角色。 寄存器14是链接寄存器LR,用于存储子程序返回地址,特别是在执行跳转指令时。在程序开始或中断服务子程序中,LR会保存退出地址。由于LR在不同处理器模式下都有影子寄存器,因此在保存了连接地址后,它也可以临时用作通用寄存器。最后,寄存器15是程序计数器PC,它不仅存储当前指令的地址,还包含处理器的状态信息。 处理器模式在ARM架构中扮演着重要角色,包括用户模式(User)、服务模式(SVC)、中断模式(IRQ)和快速中断模式(FIQ)。每种模式下,某些寄存器有对应的影子寄存器,用于保存上下文,以支持多任务处理和中断处理。 在程序状态寄存器(PSR)中,可以找到影响处理器行为的标志位,比如条件执行标志。ARM指令集包括了装载和存储指令,用于在内存和寄存器之间传输数据;算术和逻辑指令,用于基本的算术和逻辑运算;移位操作,可以实现数据的左移和右移;乘法指令,用于执行高效的乘法操作;比较指令,用于比较两个值;分支指令,如跳转和循环控制;条件执行,根据PSR中的标志决定是否执行特定指令;软件中断指令,用于触发软件生成的中断请求;以及APCS(ARM过程调用标准),定义了函数调用和返回的规范。 在编写32-bit代码时,有一些基本的安全规则需要遵循,以确保代码的正确性和兼容性。此外,文档还包含了IEEE浮点指令,用于处理浮点计算,这对于科学计算和图形处理非常重要。汇编器伪指令则提供了高级语言的一些便利功能,让汇编语言编程更接近高级语言的体验。最后,指令快速查找表和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