- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第章__ARMTDMI(-S)指令系统.ppt
第3章 ARM7TDMI(-S)指令系统 3.1 ARM处理器寻址方式 寻址方式分类 : 1 寻址方式分类——寄存器寻址 2 寻址方式分类——立即寻址 3 寻址方式分类——寄存器移位寻址 4 寻址方式分类——寄存器间接寻址 5 寻址方式分类——基址寻址 6 寻址方式分类——多寄存器寻址 7 寻址方式分类——堆栈寻址 7 寻址方式分类——堆栈寻址 7 寻址方式分类——堆栈寻址 7 寻址方式分类——堆栈寻址 8 寻址方式分类——相对寻址 3.2 指令集介绍 3.2.1 ARM指令集 1 ARM指令集——指令格式 2 ARM指令集——条件码 3 ARM指令集——ARM指令种类 ARM存储器访问指令 ARM存储器访问指令——单寄存器存取 ARM数据处理指令 数据传送指令 算术逻辑运算指令 比较指令 ARM乘法指令 ARM指令集——32×32位乘法指令 ARM指令集——32×32位乘法指令 ARM指令集——32×32位乘加法指令 ARM分支指令 ARM指令集——分支指令 ARM协处理器指令 ARM指令集——协处理器指令 ARM杂项指令 ARM指令集——杂项指令 ARM指令集——软中断指令 ARM指令集——状态寄存器读指令 ARM伪指令 ARM伪指令 3.2.2 Thumb指令集 简单的Thumb程序 Thumb指令集与ARM指令集的相似处 Thumb指令集与ARM指令集的区别 应用示例: MUL R3,R2,R1 ; R3=R2×R1 00乘法 0x?? R1 R2 R3 0MLA 目标寄存器,运算寄存器1,运算寄存器2,第二操作数 运算寄存器1 运算寄存器2 乘法 中间结果 加法 第二操作数 目标寄存器 ARM中有两种方式可以实现程序的跳转: 1. 直接向PC寄存器赋值实现跳转; 例: MOV PC, R14 2. 使用分支指令直接跳转:分支指令有分支指令B,带链接的分支指令BL,带状态切换的分支指令BX。 ARM指令集 OpCode 跳转目标 程序代码 跳转指令 跳转目标 分支指令种类: B:分支指令 BL:带链接的分支指令 BX:带状态切换的分支指令 ARM内核支持协处理器操作,协处理器的控制要通过协处理器命令实现。 ARM内核与协处理器的关系 ARM内核 协处理器A 协处理器B 握手信号 数据地址总线 … ARM指令集 在ARM指令集中杂项指令共有3条,它们非常重要,特别是与操作系统的使用息息相关: 1.软件中断产生指令:SWI 2. 程序状态寄存器读指令:MRS 3. 程序状态寄存器写指令:MSR ARM指令集 SWI指令用于产生软中断,主要用于用户程序调用操作系统的系统服务。执行该指令后,处理器将完成以下动作: 1. 切换到管理模式 2. 将CPSR备份到管理模式下的SPSR寄存器 3. 程序跳转到软件中断入口 “SWI” 在ARM处理器中,只有MRS指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以了解当前处理器的工作状态。读SPSR寄存器可以了解到进入异常前的处理器状态。指令格式如下所示: “MRS” 在ARM处理器中,只有MSR指令可以对状态寄存器CPSR和SPSR进行写操作。与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式等操作。 ARM指令集——状态寄存器写指令 “MSR” ARM伪指令不属于ARM指令集中的指令,是为了编程方便而定义的。伪指令可以像其它ARM指令一样使用,但在编译时这些指令将被等效的ARM指令代替。 反汇编代码 源程序 伪指令 实际指令 编译器 实际指令 实际指令 ARM指令集 ARM伪指令有四条: 1.小范围地址读取指令:ADR 2.中等范围地址读取指令:ADRL 3.大等范围地址读取指令:LDR 4.空操作指令:NOP Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出的,具有16位的代码密度。Thumb指令体系不完整,只支持通用功能。必要时还需要使用完善的ARM指令集,比如,所有异常都会自动进入ARM状态。 Thumb指令集 ; 功能:使用BX指令切换处理器状态 AREA Example8,CODE,READONLY ENTRY CODE32 ARM_CODE ADR R0,THUMB_CODE+1 BX R0 ; 跳转并切换处理器状态 ? CODE16 THUMB_CODE MOV R0,#10
文档评论(0)