- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
回 顾 第六章 ARM基本指令集与寻址介绍 6.1 指令集的特征与功能 6.2 ARM寻址方式 6.3 ARM指令集编码格式 6.4 Thumb指令集 6.1 指令集的特征与功能 1 指令概念 机器指令(machine instruction) 指令集 (Instruction Set) 2. 机器指令要素 每一个机器指令必须包含CPU执行所需的全部信息 2. 机器指令要素 操作码 (opcode) 源操作数引用 结果操作数引用 下一指令引用 3. 机器指令的表示方法—指令格式 指令格式有多种表示形式:定长,变长,混合长度 对于32位RISC处理器,一般采用定长格式的32位二进制码。 4. 机器指令的表示方法 采用符号表示法来描述机器指令 e.g. ADD, SUB,Load,Store。 由编译器完成符号→二进制的转换 5. 指令类型 指令集必须充分,应允许用户表达任何处理任务,可以表示任何高级语言的指令形式。 E.g.一行简单程序: X = X + Y 设: X的内存位置513; Y的内存位置514; 6. 指令类型的基本分类 7. 指令集设计的关键环节 指令集设计是计算机设计最有影响的方面 基本设计出发点 操作指令表 数据类型 指令格式 寄存器 寻址方式 8. 操作数类型 地址 无符号整数32位 数值 整数或定点数 浮点数 十进制数 BCD(Binary Coded Decimal) 字符 ASCII码 逻辑数据 9. 操作类型 10. 汇编语言 -举例 用机器语言编程语句 N = I + J + K 6.2 ARM寻址方式 6.2.1 寻址方式 1. 寻址方式的考虑 为什么要采用多种寻址方式? 基本寻址方式: 立即寻址 直接寻址 间接寻址 寄存器寻址 寄存器间接寻址 偏移寻址 堆栈寻址 2. RISC体系采用的指令集结构ISA 有两种ISA: Register-memory Register-Register RISC采用Register-Regiter(Load-Store) 6.2.2 ARM处理器的寻址方式 1. 立即寻址 操作数直接通过指令给出,数据包含在32位指令编码中。 32位有效立即数通过循环右移偶数位而间接得到 举例 ADD R0,R0,#1 AND R8,R7,#0xFF MOV R1,#02. 寄存器寻址 利用寄存器中的数值作为操作数,指令中的地址码给出的是寄存器名 第二操作数位寄存器型时,可以选择对第二操作数进行移位 举例 ADD R0,R1,R2 ADD R3,R2,R1,LSR #2 ADD R3,R2,R1,LSR R4 3. 寄存器间接寻址 ARM的数据传送指令都是基于寄存器间接寻址,通过Load/Store完成对数据的操作。 举例 LDR R0,[R1] STR R0,[R1] 4. 基址加偏址寻址(变址寻址) 将基址寄存器的内容与指令中给出的偏移量相加,形成存储器的有效地址,用于访问基址附近的存储器单元。 偏移量不超过4KB(指令编码中Offset 为12位) 前变址,后变址,自动变址三种模式 寄存器间接寻址实际是偏移量为0的基址加偏址寻址 举例 LDR R0,[R1,#4] LDR R0,[R1,#4]! LDR R0,[R1 ] ,#4 LDR R0,[R1,R2] LDR R0,[R1,R2,LSL,#2] LDRB R0,[R1] LDRH R1,[R0,#20] 5. 堆栈寻址 Stack是用于保存数据的一块连续内存,按照FIFO或FILO顺序存取 指向堆栈的地址寄存器成为堆栈指针(SP) 对堆栈的访问通过堆栈指针R13指向堆栈区域来实现 举例 STMFD SP!{R1-R7,LR} LDMFD SP!{R1-R7,LR} 6. 块拷贝寻址 是多寄存器传送指令LDM/STM的寻址方式,可以把内存中的数据块加载到多个寄存器中去。 LDM/STM根据其后缀名,其寻址方式有所不同 LDM/STM的后缀选择 举例 STMIA R9!,(R0,R1,R5) STMIB R9!,(R0,R1,R5) STMDA R9!,(R0,R1,R5) STMDB R9!,(R0,R1,R5) 7. 相对寻址 可以认为是基址为PC的变址寻址,偏移量给出了目的地址于现行指令之间的相对位置。 举例 BL SUBR 。。。。。。 SUBR MOV PC,R14 小 结 6.3 ARM指令集编码与格式 1. ARM指令分类 2. ARM指令编码 ARM指令编码格式 ARM条件编码格式 3. 基本指令格式 3. 基本指令格式举例 LDR
文档评论(0)