ARM嵌入式体系结构与接口技术(Cortex-A53版)第5章 ARM微处理器的指令系统.pptxVIP

ARM嵌入式体系结构与接口技术(Cortex-A53版)第5章 ARM微处理器的指令系统.pptx

  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文档。上传文档
查看更多

第5章ARM处理器的指令系统华清远见

ARM指令的寻址方式ARM指令集ARM汇编语言伪指令ARM指令系统简介

1ARM指令系统简介

ARM指令分类ARMv8指令体系包括AArch32和AArch64两种类型指令集合,AArch32指令主要目的是向下兼容ARMv7指令系统的。而每种指令集合中又包括ARM和Thumb两种不同的指令集。当处理器工作在ARM状态时,执行ARM指令集(以下简称ARM指令)。不管是AArch32指令还是AArch64指令,所有的ARM指令均为32位宽度,指令以字对齐的方式保存在存储器中,而所有的Thumb指令都是16位宽度,指令均以半字对应的方式保存在存储器中。

ARM指令编码格式典型的ARM指令语法格式如下,指令中各部分的含义,如表5-1所示。{label:*}{opcode{s}{dest{,source1{,source2{,source3}}}}}注意:花括号是可选的标识符NoteLabel标签Opcode操作码,也叫助记符,说明指令需要执行的操作类型S条件码设置项,决定本次指令执行是否影响PSTATE寄存器响应状态位值Dest目标寄存器,用于存放指令的执行结果。Source1第一个源操作数Source2第二个源操作数Source3第三个源操作数

ARM指令条件码域ARM指令中支持的所有的条件码操作码条件助记符标志位含义0000EQZ==1相等0001NEZ==0不相等0010CSC==1无符号的大于或等于0011CCC==0无符号小于0100MIN==1负数0101PLN==0正数或零0110VSV==1溢出0111VCV==0没有溢出1000HIV==1Z==0无符号数大于1001LS!(C==0Z==1)无符号数小于或等于1010GEN==V有符号数大于或等于1011LTN!=V有符号数小于1100GTZ==0N==V有符号数大于1101LE!(Z==1N!=V)有符号数小于或等于1110无(AL)任意无条件执行1111无(NV)任意无条件执行

2ARM指令的寻址方式

数据处理指令寻址方式数据处理指令的基本语法格式:opcode{S}Xd,Xn,shifter_operand其中,shifter_operand有11种形式,如表所示。语法寻址方式1#immediate立即数寻址2Xm寄存器寻址3Xm,LSL#shift_imm立即数逻辑左移4Xm,LSLRs寄存器逻辑左移5Xm,LSR#shift_imm立即数逻辑右移6Xm,LSRRs寄存器逻辑右移7Xm,ASR#shift_imm立即数算术右移8Xm,ASRRs寄存器算术右移9Xm,ROR#shift_imm立即数循环右移10Xm,RORRs寄存器循环右移11Xm,RRX寄存器扩展循环右移

立即数寻址方式AArch64汇编语言不要求使用“#”符号引入立即数,但汇编程序必须允许这样做。在AArch64汇编语言中在立即数前边可以加“#”符号,也可以不加“#”符号。为了提高代码的可读性,AArch64反汇编程序都会在立即数前边添加一个“#”号。下面是一些应用立即数的指令:MOVX0,#0xFF //将0xFF赋值给X0ADDX1,X1,#1 //X1=X1+1CMPX7,#2000 //将X7寄存器中的值和2000比较ORRX9,X1,#0xFF//将X1中的[7:0]位置1,结果写到X9中或者MOVX0,0xFF //将0xFF赋值给X0ADDX1,X1,1 //X1=X1+1CMPX7,2000 //将X7寄存器中的值和2000比较ORRX9,X1,0xFF //将X1中的[7:0]位置1,结果写到X9中

寄存器寻址方式寄存器的值可以被直接用于数据操作指令,这种寻址方式是各类处理器经常采用的一种方式,也是一种执行效率较高的寻址方式,举例如下。MOVX2,X0 //X0的值赋值X2ADDX4,X3,X2 //X2加X3,结果赋值X4CMPX7,X8 //比较X7和X8的值

寄存器移位寻址方式寄存器的值在被送到ALU之前,可以事先经过桶形移位寄存器的处理。预处理和移位发生在同一周期内,所以有效地使用移位寄存器,可以增加代码的执行效率。下面是一些在指令中使用了移位操作的例子。ADDX2,X0,X1,LSR#5//X1中的值右移5位,X0加X1,结果赋值给X2MOVX1,

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档