《微处理器系统结构与嵌入式系统设计》chap8.pptVIP

《微处理器系统结构与嵌入式系统设计》chap8.ppt

  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文档。上传文档
查看更多
* TST指令:如果指令的结果为0,则Z=1;不等于0,则Z=0 EQ:Z=1;NE:Z=0 * SWI:0伪指令 ADR/ADRL 将相对于程序或相对于寄存器的地址载入寄存器中(中等范围,与位置无关)。 指令书写格式:ADR(ADRL)[cond] Rd, label …… MOV R0, #18 ; 给R0赋值用于查表 ADR R3, JumpTable ; 装载跳转表的首地址 LDR PC, [R3,R0,LSL#2] ; 查表,将查到的地址赋给PC JumpTable …… ADR R3 JumpTable LDR PC,[R3,R0,LSL#2] xxx JumpTable xxx xxx xxx xxx PC R3 JumpTable xxx JumpTable+72 伪指令 LDR 将32位常数或地址载入寄存器(无范围限制,但与位置相关) 指令书写格式:LDR[cond][.W] Rd, =expr/=label_expr expr取值为一个数值常数 如果expr的值位于范围内,则汇编器将会生成一个MOV或MVN指令 如果expr的值不在MOV或MVN指令的范围内,则汇编器会将常数放入文字池中,并会生成一个相对于程序的LDR指令,该指令可从文字池中读取此常数 指令举例 LDR R3,=0xFF0 ; 把立即数0xFF0赋值给R3 LDR R2,=place ; 把标号place对应的地址赋值给R2 ARM指令系统总结 ARM指令集 ARM指令:32 bits(字长),4字节边界对齐 Thumb指令:16 bits(半字), 2字节边界对齐 数据类型 字节:8bit,任意存放 半字:16bit,2字节边界对齐 字: 32 bits,4字节边界对齐 所有数据操作都以字为单位; Load-store操作: 可以对字节、半字、字和双字进行操作; 当装载字节或半字时自动实现零扩展或符号扩展。 ARM指令与Thumb指令 THUMB指令是ARM指令的子集 只要遵循一定的调用规则,可以相互调用 Thumb指令与ARM指令的时间效率和空间效率关系 存储空间约为ARM代码的60%~70% 指令数比ARM代码多约30%~40% 存储器为32位时ARM代码比Thumb代码快约40% 存储器为16位时Thumb比ARM代码快约40~50% 存储器的功耗会降低约30% 堆 栈 寻 址 1. 操作数存放在内存栈顶单元中; 2.指令地址码字段固定使用栈顶指针SP; 3.指令执行时同多寄存器/块寻址,可完成多个数据的入栈和出栈; LDMEA SP!,{R2-R4,R6} ; R2= [SP-10] , R3= [SP-C] ; R4= [SP-8] , R6= [SP-4],SP=SP-10 STMFD SP!,{R2-R4,R6} ; [SP-4]= R6 , [SP-8]=R4 ; [SP-C] =R3, [SP-10]=R2, SP=SP-10 0SP R2 0x?? 0x01 00x?? R3 R4 0x?? R6 0x?? 0x02 0x03 0x04 000x4000000C 0x01 0x02 0x03 0x04 0堆栈单元 Empty Ascending Full Desending 多寄存器/块寻址 ARM支持的四种堆栈类型 满递增(FA):堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。 空递增(EA) :堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。 满递减(FD) :堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。 空递减(ED) :堆栈向下增长,堆栈指针向堆栈下的第一个空位置。 堆栈的递增与递减 递增堆栈:向高地址方向生长,即向上生长 递减堆栈:向低地址方向生长,即向下生长 栈底 栈顶 栈区 SP? 堆栈存储区 栈顶 栈底 栈区 ?SP 地址减少 地址增加 00递增堆栈压栈 递减堆栈压栈 栈顶 SP? 栈顶 SP? 栈底 栈底 堆栈的空与满 空堆栈:堆栈指针SP指向下一个待压入数据的空位置 满堆栈:堆栈指针SP指向最后压入的堆栈的有效数据项 00栈顶 SP? 0栈顶 SP? 满堆栈压栈 空堆栈压栈 数据处理指令 ARM的数据处理指令大致可分为以下几类: 数据传送指令:MOV、MVN 算术运算指

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档