[工学]4嵌入式微处理器arm_2.pptVIP

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

5.1 ARM微处理器的指令集概述 5.1.1 ARM微处理器的指令分类 Load-store 结构 在通用寄存器中操作 load/store –从存储器中读某个值,操作完后再将其放回存储器中 指令分类 数据处理指令 – 使用和改变寄存器的值 数据传送指令 – 把存储器的值拷贝到寄存器中 (load) or 把寄存器中的值拷贝到存储器中(store) 控制流指令 分支 分支和链接, 保存返回的地址,以恢复最先的次序 程序状态寄存器(PSR)处理指令 协处理器指令 异常产生指令 5.1.2 指令的条件域 所有的ARM指令都可以条件执行 指令的执行与否取决于CPSR寄存器的N, Z, C and V标志位 所有的Thumb指令都可以解压成全部条件指令 当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。 每一条ARM指令包含4位的条件码,位于指令的最高4位[31:28]。条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。 在16种条件标志码中,只有15种可以使用。 条件执行 条件执行避免使用分支指令 Example 5.1.3 指令格式 指令长度 指令集可以是以下任一种 32 bits 长 (ARM状态) 16 bits 长 (Thumb 状态) ARM 支持3种数据类型 字节 (8-bit) 半字 (16-bit) 字 (32-bit) 字必须被排成4个字节边界对齐,半字必须被排列成2个字节边界对齐 ARM指令集编码* 5.2 ARM指令的寻址方式 所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。 5.2.1 立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。 例如以下指令: ADD R0,R0,#1 ;R0←R0+1 ADD R0,R0,#0x3f ;R0←R0+0x3f 第二个源操作数即为立即数,要求以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”或“”。 5.2.2 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令: ADD R0,R1,R2 ;R0←R1+R2 5.2.4 基址变址寻址 基址变址寻址:将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。 采用变址寻址方式的指令常见有以下几种形式,如下所示: 前变址模式: LDR R0,[R1,#4] ;R0←[R1+4] 后变址模式: LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4 自动变址模式: LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4 数据传送指令 5.2.5 多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。 LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0+4] ;R3←[R0+8] ;R4←[R0+12] 该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1~R4。 5.2.6 相对寻址 与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址, 指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。 以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式: BL NEXT ;跳转到子程序NEXT处执行 …… NEXT …… MOV PC,LR ;从子程序返回 5.2.7 堆栈寻址 堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 满堆栈(Full Stack):当堆栈指针指向最后压入堆栈的数据时; 空堆栈(Empty Stack):当堆栈指针指向下一个将

文档评论(0)

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

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

1亿VIP精品文档

相关文档