第三讲-A与RM指令系统 .ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三讲-A与RM指令系统

ARM指令集总体分为6类指令 数据处理指令:数据传输指令,算术指令,逻辑指令,比较指令,乘法指令,前导零计数。 程序状态访问指令:mrs和msr。 跳转指令:b和bl。 访存指令:单数据访存指令,多数据访存指令,信号量操作指令。 异常中断产生指令:swi和bkpt。 协处理器指令。 所有指令都是32bit。 大多数指令都在单周期内完成。 所有指令都可以条件执行。 load/store体系结构。 指令集可以通过协处理器扩展 Opcode{cond}{s} Rd, Rn, Operand2 Cond:指令的条件码。 Opcode:指令操作码。 S:操作是否影响cpsr。 Rn:包含第一个操作数的寄存器编码。 Rd:目标寄存器编码。 Operand2:第2操作数。 EQ/NE: 等于/不等于(equal / not equal) HS/LO: 无符号数高于或等于/无符号数小于(higher or same/lower) HI/LS: 无符号数高于/无符号数低于或等于(higher/lower or same) GE/LT: 有符号数大于或等于/有符号数小于(greater or equal / less than) GT/LE: 有符号数大于/有符号数小于或等于(greater than / less or equal) MI/PL: 负/非负 VS/VC: 溢出/不溢出(overflow set / overflow clear) CS/CC: 进位/无进位(carry set / carry clear) LSL:逻辑左移(Logical Shift Left)。寄存器中字的低端空出的位补0。 ·LSR:逻辑右移(Logical Shift Right)。寄存器中字的高端空出的位补0。 ·ASR:算术右移(Arithmetic Shift Right)。算术移位的对象是带符号数,在移位过程中必须保持操作数的符号不变。若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。 ·ROR:循环右移(Rotate Right)。从字的最低端移出的位填入字的高端空出的位。 ·RRX:扩展为1的循环右移(Rotate Right Extended by 1 place)。操作数右移一位,空位(位[31])用原C标志填充。 移位操作 在任何数据处理指令中,第二寄存器操作数可以有应用该操作数的移位操作. 逻辑移位 LSL:逻辑左移字的最小位空位清零 LSR:逻辑右移字的最大位空位清零. 移位操作 (cont’d) 算术移位 ASR: 正数的ASR= LSR 循环移位: ROR, RRX 5. 变址寻址 变址寻址就是将基址寄存器的内容与指令中给出的位移量相加,形成操作数有效地址。变址寻址用于访问基址附近的存储单元,包括: 基址加偏移 基址加索引寻址。 寄存器间接寻址是偏移量为0的基址加偏移寻址。 变址寻址: 基址加偏移寻址中的基址寄存器包含地址,需加(或减)(最大4 KB)的偏移来计算访问的地址。 LDR R0,[R1,#4] ; R0 =[R1+4] 这是前索引寻址方式。 带自动索引的前索引寻址。 LDR R0,[R1,#4]! ; R0= [R1+4] ; R1 =R1+4 “!”符号表明指令在完成数据传送后应该更新基址寄存器 变址寻址: 后索引寻址。基址不带偏移作为传送的地址,传送后自动索引。 LDR R0,[R1],#4 ; R0= [R1] ; R1= R1+4 基址加索引寻址有时指令指定一个基址寄存器,再指定另一个寄存器(索引),其值作为偏移加到基址上形成存储器地址。例如指令: LDR R0,[R1,R2] ; R0= [R1+R2] 6. 块拷贝(多寄存器)寻址: ARM支持两种不同角度的块寻址机制,两者都映射到相同的基本指令——多寄存器传送指令。多寄存器传送指令可以用于把一块数据从存储器的某一位置拷贝到另一位置;基于数据是存储在基址寄存器的地址之上还是之下,地址是在存储第1个值之前还是之后增加还是减少。 下 图说明了4种不同情况的多字节传送指令传送前后的内存变化,以及使用自动寻址时如何修改基址寄存器。指令执行前的基寄存器是R9 ,指令执行后的基寄存器是R9’。 7.堆栈寻址: 堆栈是一种按特定顺序进行存取的存储区。“后进先出”(LIFO)。栈指针所指定的存储单元就是堆栈的栈顶。存储器堆栈可分为两种: ·向上生长:即向高地址方向生长,称为递增堆栈(ascending stack)。 ·向下生长:即向低地址方向生长,称为递减堆栈(descending

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档