网站大量收购独家精品文档,联系QQ:2885784924

ch3 ARM指令系统的.ppt

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

《嵌入式系统原理与应用技术》 袁志勇 王景存 章登义 刘树波 北京: 北京航空航天大学出版社, 2009.11 PPT教学课件 ;Ch3 ARM指令系统;ARM指令集总体可分为以下几类;3.1 ARM指令集;cond; 这里以ARM数据处理类指令为例,说明ARM指令格式。ARM数据处理类指令编码基本格式见图3.1所示。 ARM数据处理指令基本格式如下: Opcode{cond}{s} Rd, Rn, Operand2 其中,内的项是必须的,{}内的项是可选的。如Opcode是指令助记符,是必须的,而{cond}是指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)。 cond: 指令的条件码。 Opcode: 指令操作码(有16种编码,对应于16条指令,见下页)。 S: 操作是否影响cpsr。 Rn: 表示第1个操作数的寄存器编码。 Rd: 目标寄存器编码。 Operand2: 第2操作数(立即数/寄存器/寄存器移位)。 X:1-第2操作数是立即数寻址, 0-第2操作数是寄存器寻址;Opcode: bit[24:21] Operation codes(未含乘法指令) 0000 = AND-Rd: = Op1 AND Op2 0001 = EOR-Rd: = Op1 EOR Op2 0010 = SUB-Rd: = Op1-Op2 0011 = RSB-Rd: = Op2-Op1 0100 = ADD-Rd: = Op1+Op2 0101 = ADC-Rd: = Op1+Op2+C 0110 = SBC-Rd: = OP1-Op2+C-1 0111 = RSC-Rd: = Op2-Op1+C-1 1000 = TST-set condition codes on Op1 AND Op2 1001 = TEQ-set condition codes on OP1 EOR Op2 1010 = CMP-set condition codes on Op1-Op2 1011 = CMN-set condition codes on Op1+Op2 1100 = ORR-Rd: = Op1 OR Op2 1101 = MOV-Rd: =Op2 1110 = BIC-Rd: = Op1 AND NOT Op2 1111 = MVN-Rd: = NOT Op2 ;条件码的位数和位置:每条ARM指令包含4位条件码域cond,它占用指令编码的最高4位[31:28]。 条件码的表示:条件编码共 24 =16 种,其中,15种用于指令的条件码。每种条件码用2个英文缩写字符表示。(见P59 表3-1) 带条件指令的执行:ARM处理器根据指令的执行条件是否满足,决定当前指令是否执行。 只有在cpsr中的条件标志位满足指定的条件时,指令才会被执行。不符合条件的代码依然占用一个时钟周期(相当于一个NOP指令)。 条件码的书写方法:条件码的位置在指令助记符的后面(因此也称为条件后缀)。 例如: MOVEQ R0, R1 ;条件码;(1) ARM数据处理指令的功能 主要完成寄存器中数据的算术和逻辑运算操作。 (2) ARM数据处理指令的特点 --操作数来源:所有的操作数要么来自寄存器,要么来自立即数,不会来自存储器。 --操作结果:如果有结果,则结果一定是为32位宽、或64位宽(长乘法指令),并且放在一个或两个寄存器中,不会写入存储器。 --有第2个操作数(除了乘法指令)Operand2 :切记其三种形式:立即数、寄存器、寄存器移位。 --乘法指令的操作数:全部是寄存器。;3.1.2 ARM指令寻址方式 ;2.立即寻址 立即寻址是一种特殊的寻址方式,指令中在操作码字段后面的地址码部分不是操作数地址,而是操作数本身。 例: ADD R3, R3, #10 ;R3←R3+10 立即数要以“#”号作前缀,以十进制数10为例:它的16进制立即数为#0xa;它的2进制立即数为#0b1010。 关于立即数的构成,可参考图3.2。; 从图3.2可知,有效的立即数可以表示为: immediate=Immed_8 循环右移2 × rot位 由于4 位rot移位值的取值 (0~15)乘于2,得到一个范围在0~

文档评论(0)

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

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

1亿VIP精品文档

相关文档