- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
寻址方式介绍 ARM 处理器是基于精简指令集计算机(RISC)原理设计的; 具有ARM和THUMB两套指令集; 寻址方式介绍 寻址方式:是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式; ARM 处理器有 9 种基本寻址方式: 寄存器寻址 立即寻址 寄存器偏移寻址 寄存器间接寻址 基址寻址 多寄存器寻址 堆栈寻址 块拷贝寻址 寄存器寻址 概念:操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直 接取出寄存器值操作; 举例: 立即寻址 概念:立即寻址指令中的操作码字段后面的地址码部分就是操作数本身,也就是说,数据 就包含在指令当中,取出指令也就取出了可以立即使用的操作数(立即数); 举例: 寄存器偏移寻址 概念:寄存器偏移寻址是ARM指令集特有的寻址方式,当第2操作数是寄存器偏移方式时, 第 2 个寄存器操作数在与第 1 个操作数结合之前,选择进行移位操作; 举例: 移位操作 LSR:逻辑右移(Logical Shift Right),寄存器中字的高端空出的位补0; ASR:算术右移(Arithmetic Shift Right),移位过程中保持符号位不变,即如 果源操作数为正数,则字的高端空出的位补0,否则补1; ROR:循环右移(Rotate Right),由字的低端移出的位填入字的高端空出的位; RRX:带扩展的循环右移(Rotate Right eXtended by 1place),操作数右移一位, 高端空出的位用原 C 标志值填充; 寄存器间接寻址 概念:寄存器间接寻址指令中的地址码给出的是一个通用寄存器编号,所需要的操作数保 存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针; 举例: 基址寻址 概念:基址寻址是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址,基址寻址用于访问基址附近的存储单元,常用于查表,数组操作,功能部件寄存器 访问等; 举例: 多寄存器寻址 概念:多寄存器寻址就是一次可以传送几个寄存器值,允许一条指令传送 16 个寄存器的 任何子集或所有寄存器; 举例: 堆栈寻址寻址 概念:堆栈寻址时隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈), 指针所指向的存储单元就是堆栈的栈顶; 举例: 堆栈类型 满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的 最高地址。指令如 LDMFA,STMFA 等; 空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空 位置。指令如 LDMEA,STMEA 等; 满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最 低地址。指令如 LDMFD,STMFD 等; 空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空 位置。指令如 LDMED,STMED 等; 块拷贝寻址 概念:多寄存器传送指令用于一块数据从存储器的某一位置拷贝到另一位置; 举例: 相对寻址 概念:相对寻址是基址寻址的一种变通,由程序计数器 PC 提供基准地址,指令中的地址 码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。 举例: ARM指令集 opcode{cond}{S}Rd,Rn{,opcode2} opcode:指令助记符,如LDR,STR等; cond:执行条件,如EQ,NE等; S:是否影响 CPSR 寄存器的值; Rd:目标寄存器; Rn:第一个操作数的寄存器; operand2:第二个操作数; 指令第二操作数 #immed_8r,8位位图; 合法常数:0x3FC、0、0xF0000000、200,0xF0000001; 非法常数:0x1FE、511、0xFFFF、0x1010、0xF0000010 Rm,寄存器方式; SUB R1,R1,R2 Rm,shift,寄存器移位方式; ADD R1,R1,R1,LSL #3 指令条件码 指令条件码举例 比较两个值大小,并进行相应加1处理; C 代码为:if(a>b) a++;else b++; ARM指令(其R0为a,R1为b) CMP R0,R1 ;R0与R1比较ADDHI R0,R0,#1 ;若R0>R1,则R0=R0+1 ADDLS R1,R1,#1 ;若R0<=R1,则R1=R1+1 存储器访问指令 ARM 处理器是冯. 诺依曼存储结构,程序空间、RAM空间及IO映射空间统一编址,除对RAM、外围IO、程序数据的访问均通过加载/存储指令进行。 ARM处理是加载/存储体系结构的典型的RISC处理器,对存储器的访问只能使用加载和存储指令实现。 ARM 的加载/存储指令是可以实现字、半字、
文档评论(0)