- 1、本文档共216页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)