指令集.pptVIP

  1. 1、本文档共114页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指令集

ARM指令系统概述 ARM处理器是基于RISC原理设计的,具有32位ARM指令集和16位Thumb指令集。ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。 ARM指令系统概述 ARM指令长度 指令集可以是以下任一种 32 bits 长 (ARM状态) 16 bits 长 (Thumb 状态) ARM7TDMI 支持3种数据类型 字节 (8-bit) 半字 (16-bit) 字 (32-bit) 字必须被排成4个字节边界对齐,半字必须被排列成2个字节边界对齐 ARM指令系统概述 ARM程序示例 ARM指令系统概述 ARM指令分类 数据处理指令 ADD, SUB, MUL, BIC, CMP, SWP,MOV, etc 跳转指令 BL, BX, BLX 存储访问指令 LDR,STR,LDM,STM,SWP 协处理器指令 CDP, LDC, STC, MCR, MRC 杂项指令 SWI, MRS, MSR ARM指令的条件域 ARM指令的条件域 ARM指令的条件域 ARM指令的寻址方式 ARM寻址方式是处理器根据指令中给出的地址信息来寻找物理地址的方式 寄存器寻址 ADD R0,R1,R2 ;R0←R1+R2 立即寻址 ADD R0,R0,#0x3f ;R0←R0+0x3f 寄存器间接寻址 ADD R0,R1,[R2] ;R0←R1+[R2] 寄存器基址变址寻址 LDR R0,[R1,#4] ;R0←[R1+4] LDR R0,[R1,#4]! LDR R0,[R1],#4 ARM指令的寻址方式 多寄存器寻址 LDMIA R1!,{R2-R7,R12} ;将R1指向的单元中的数据读出 ;到R2~R7、R12中(R1自动加4) STMIA R0!,{R2-R7,R12} ;将R2~R7、R12的值保存到R0 ;指向的存储单元中(R0自动加4) ARM指令的寻址方式 相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下: ARM指令的寻址方式 堆栈寻址:堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。 同时,根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(Decending Stack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。 ARM指令的寻址方式 ARM微处理器支持这四种类型的堆栈工作方式: 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。指令如LDMFA,STMFA等 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。指令如LDMFD,STMFD等。 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。指令如LDMEA,STMEA等 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。指令如LDMED,STMED等 ARM指令的第2操作数 ARM指令的第2操作数 ARM指令的第2操作数 ARM数据处理指令 数据处理指令大致可以分为3类 数据传送指令 算术逻辑运算指令 比较指令 数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据处理指令均可选择使用S后缀,以使指令影响状态标志。 ARM数据处理指令-数据传送 ARM数据处理指令-数据传送 ARM数据处理指令-算术运算 ARM数据处理指令-算术运算 ARM数据处理指令-算术运算 ARM数据处理指令-算术运算 ARM数据处理指令-逻辑运算 ARM数据处理指令-逻辑运算 ARM数据处理指令-逻辑运算 ARM数据处理指令-比较指令 ARM数据处理指令-比较指令 ARM数据处理指令-比较指令 条件执行示例 一系列的指令都使用条件指令 if (a==0) func(1); CMP r0,#0 MOVEQ r0,#1 ;把func()函数的

文档评论(0)

hello118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档