更好说明寻址过程ppt课件_第1页
更好说明寻址过程ppt课件_第2页
更好说明寻址过程ppt课件_第3页
更好说明寻址过程ppt课件_第4页
更好说明寻址过程ppt课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、事项事项 更好了解MMU,下载10.1.4.123中的mmu.pdf更好阐明寻址过程更好阐明寻址过程为什么我们要学指令?为什么我们要学指令? C 言语:y=a*(b+c) ARM指令实现:ADR R4,b LDR R0,R4 ADR r4,c LDR r1,r4 ADD r2,r0,r1 ADR r4,a LDR r0,r4 MUL r2,r2,r0 ADR r4,y STR r2,r4本课内容本课内容 ARM指令的条件执行 Load/Store类指令 ARM数据处置类指令 ARM转移类指令 ARM协处置器类指令 ARM杂项指令 XScale指令 5.2.2 ARM指令的条件执行指令的条件执行

2、 几乎一切的ARM指令均可包含一个可选的条件码,句法阐明中以cond表示。只需在CPSR中的条件码标志满足指定的条件时,带条件码的指令才干执行。 几乎一切的ARM数据处置指令均可以根据执行结果来选择能否更新条件码标志。 条件码中的N,Z,C和V位的值将决议指令如何执行,条件码如表所示操作码操作码31:28条件代码条件代码含义含义标志位状态显示标志位状态显示0000EQ相等相等/是否为是否为0Z置位置位0001NE不等不等Z清零清零0010CS/ HS*进位置位进位置位/大于大于C置位置位0011CC/L O*进位清零进位清零/小于小于C清零清零0100MI结果为负结果为负N置位置位0101PL

3、结果为正结果为正N清零清零0110VS溢出溢出V置位置位0111VC无溢出无溢出V清零清零1000HI*大于大于C置位并且置位并且Z清零清零1001LS*小于小于C清零或清零或Z置位置位1010GE*大于等于大于等于N等于等于V1011LT*小于等于小于等于N不等于不等于V1100GT*大于大于Z清零或清零或N等于等于V1110LE*小于等于小于等于Z置位或置位或N不等于不等于V1111AL始终始终任何任何5.2.3 Load/Store类指令类指令 单字和无符号字节Load/Store类指令 半字和有符号字节Load/Store类指令 双字Load/Store类指令 多存放器Load/Sto

4、re类指令 预读取PLD指令 内存和存放器交换类指令 单字和无符号字节单字和无符号字节Load/Store类指令类指令功能:提供ARM存放器和内存之间单字节(8位)或单字(32位)数据的传送格式: 1零偏移zero offset LDR | STR BT Rd ,Rn ;(Rn)Rd 零偏移指的是将Rn的内容作为传送数据的地址。 2前变址pre-indexed offset LDR | STR B Rd , Rn , ! ;Rn+ offsetRd 前变址指的是在数据传送之前,将偏移量加到Rn中,其结果作为传送数据的存储地址。假设运用后缀“!,那么结果写回到Rn中,Rn不允许是R15 3程序相

5、对偏移programrelative LDR | STR Rd , LABEL ;LABELRd 程序相对偏移指的是由PC计算偏移量,并将PC作为Rn生成前变址指令。不能运用后缀“!。 4后变址post-indexed offset LDR | STR B T Rd , Rn , 后变址指的是将Rn的值用作传送数据的存储器地址,数据传送后,偏移量加到Rn中,结果写回到Rn。Rn不允许是R15。LDR Rd , Rn , offset 等价为:(Rn)Rd,(Rn)+offsetRn 例 1) :将R0中的内容存放进外设中。 LDR R1 , UARTADD ; 将UART地址放进R1中 STR

6、B R0 , R1 ;将数据放进外设中 UARTADD & &1000000 ;UART的地址值例 2) :LDR R8,R10 ;( R10)R8 LDRNE R2,R5,#960! ;Z1时,(R5)+960)R2,(R5)+960R5 STR R2,R9,#consta-struc ; consta-struc是常量的表达式,该常量值的范围为14095 STRB R0,R3,-R8,ASR #2 ;R0(R3-R8/4),存储R0的最低有效字节,R3和R8不变 STR R5,R7,#-8 ;R5(R7), R7-8R7 LDR R0,localdata ; 读取一个字,该

7、字位于标号lacaldata所在地址半字和有符号字节半字和有符号字节Load/Store类指令类指令 功能:提供ARM存放器和内存之间半字16位和有符号字节8位数据的传送。 格式:1零偏移zero offset LDR | STR H | SH | SB Rd,Rn2前变址pre-indexed offsetLDR | STR H | SH | SB Rd , Rn , !3程序相对偏移pregramrelatveLDR | STR H | SH | SB Rd , LABEL4后变址post-indexed offsetLDR | STRH | SH | SB Rd , Rn , 其中: H

8、 | SH | SB 表示数据类型选择 SH 对有符号半字仅LDR H 对无符号半字; SB 对有符号字节仅LDR。例:LDREQSH R11,R6 ;有条件地R11R6,读取16位半字,有符号扩展到32位 LDRH R1,R0,#22 ;R1R0+22,读取16位半字,零扩展到32位 STRH R4,R0+R1 ;存储最低的有效半字到R0+R1地址开场的两个字节,地址写回到R0 LDRSB R6,constf ;读取位于标号constf地址中的字节,有符号扩展双字双字Load/Store类指令类指令 功能:提供ARM存放器和内存之间双字(64位)数据的传送 格式:1零偏移zero offse

9、t LDR | STR D Rd,Rn2前变址格式pre-indexed offsetLDR | STR D Rd , Rn , !3程序相对偏移pregramrelatveLDR | STR D Rd , LABEL4后变址格式post-indexed offset LDR | STR D Rd , Rn , 多存放器多存放器Load/Store类指令类指令 功能: 装入和存储多个存放器,可以传送R0R15的任何组合 格式: 1规范格式 LDM | STM Rn! , 2非用户方式下,用下面格式可以同时把当前的SPSR写入CPSR中,转向用户方式,存放器组包含PC。 LDM Rn! , 3非

10、用户方式下,用下面格式可以实现访问用户方式的存放器,但存放器组不包含PC。 LDM | STM Rn , 例 1 假设保管三个任务存放器形状和前往地址, STMFD R13! , R0-R2 , R14 假设恢复三个任务存放器形状和前往地址 LDMFD R13! , R0-R2 , PC例 2 LDMIA R8,R0,R2,R9 ; (R8)R0 ; (R8)+4)R2 ; (R8)+8)R9 STMDB R1!,R3R6,R11,R12 ; (R3)R1- 4 ; (R4)R1- 8 ; (R5)R1- 12 ; (R6)R1- 16 ; (R11)R1- 20 ; (R12)R1- 24

11、; (R1)- 24R1 STMFD R13!,R0,R4-R7,LR ;存放器进栈 LDMFD R13!,R0,R4-R7,PC ; 同样的存放器出栈,从子程序前往例 3 子程序调用 SUB1 STMFD SP! , R0-R2 , R14 ;维护R0R2和前往地址 ; 其它指令 BL label ; 允许子程序嵌套 ; 其它指令LDMFD SP! , R0-R2 , R15 ;恢复R0R2,前往子程序调用程序后执行预读取预读取PLD指令指令 功能:Cache 预读取PLD,PreLoaD,运用PLD指示存储系统从后面几条新指令所指定的存储器地址读取。存储系统可运用这种方法加速以后的存储器访

12、问。 格式:PLD Rn,offset 其中:Rn 存储器的基址存放器。 Offset 加在Rn上的偏移量 PLD R9,#-2481内存和存放器交换类指令内存和存放器交换类指令 功能:用一条指令实如今存放器和存储器之间交换数据 格式:SWP B Rd , Rm , Rn ;(Rn)Rd , (Rm)Rn; nm ,d , ;如d=m, 为交换,Rm(Rn) 5.2.4 ARM数据处置类指令数据处置类指令 第二操作数 数据运算类指令 前导零计数指令 乘法类指令 QADD、QSUB、QDADD和QDSUB指令 第二操作数第二操作数 大多数ARM通用数据处置指令有一个灵敏的第二操作数flexibl

13、e second operand。在每一个指令的格式中以“Operand2表示 。两种能够的格式:1# immed-8r 常量的表达式。常量必需对应于8位位图pattern。该位图在32位字中,被循环移位偶数位0、2、4、8、26、28、30。合法常量:0 xFF、0 xFF000、0 xF000000F。非法常量:0 x101、0 xFF04、0 xFF003、0 xFFFFFFFF。 2Rm , shift Rm 存储第二操作数的ARM存放器。可用各种方法对存放器中的位图进展移位或循环移位。在指令中移位操作的结果用作第二操作数,但Rm本身不变。 Shift Rm的移位方法 数据运算类指令数

14、据运算类指令 功能:完成数据在存放器中的运算,这些运算包括32位数据的算术、位操作,其中某一个操作数可以经过移位或循环运算。 格式: S Rd , Rn , Operand2 操作码 包括ADD、SUB、RSB、ADC、SBC、RSC、AND、ORR、EOR、BIC MOV、MVN、CMP、CMN、TST和TEQ指令例 1: ADD R2,R1,R3 ;R1+(R3)R2例 2: SUBSR2, R2, #1 ; R2-1R2 BEQ LABEL ; 如等于0,转向LABEL例 3: R0中的内容乘5ADD R0, R0, R0, LSL #2 ; (R0)*5R0 例 4: R0中的内容乘1

15、0 ADD R0, R0, R0, LSL #2 ; (R0)*10R0 MOV R0, R0, LSL #1前导零计数指令前导零计数指令 功能:CLZCount Leading Zeros指令对Rm中值的低位零leading zeros的个数进展计数,结果放到Rd中。假设源存放器全为0,那么结果为32。假设位31为1,那么结果为0 格式:CLZ Rd , Rm 其中: RdARM结果存放器,Rd不允许是R15。 Rm操作数存放器。乘法类指令乘法类指令 指令名指令含义结果MUL乘法(结果为32位)Rd:=Rm*RsMLA乘法累加(结果为32位)Rd+=Rm*RsUMULL无符号数乘法(结果为6

16、4位)RdHi:RdLo:=Rm*RsUMLAL无符号数乘法累加(结果为64位)RdHi:RdLo+=Rm*RsSMULL有符号数乘法(结果为64位)RdHi:RdLo:=Rm*RsSMLAL有符号数乘法累加(结果64位)RdHi:RdLo+=Rm*RsSMULxy有符号半字乘法(结果为32位)Rd:=Rm*RsSMLAxy有符号半字乘累加(结果为32位)Rd:=Rm*Rs+RnSMULWy有符号32位16位乘法(结果为高32位)Rd:=Rm*RsSMLAWy有符号32位16位乘累加(结果为高32位)Rd:=Rm*Rs+RnQADD、QSUB、QDADD和和QDSUB指令指令 功能:这四条指令

17、属于DSP加强指令,完成饱和加、饱和减、饱和乘2加、饱和乘2减四种饱和运算功能 格式:条件码 Rd, Rm, Rn 包括:QADD、QSUB、QDADD和QDSUB指令。 其中: Rd 结果存放器 Rm,Rn 操作数存放器阐明:饱和运算是DSP指令所特有的功能,对加/减法指令的结果做了如下修正:假设加/减法指令的结果在-231231-1之间,饱和运算的结果取加/减法指令的结果。假设加/减法指令的结果大于231-1,饱和运算的结果取最终结果为231-1。假设加/减法指令的结果小于-231,饱和运算的结果取最终结果为-231。 QDADD和QDSUB指令计算SATRm+SATRn*2。饱和可发生在

18、加倍操作、加法上,或两种情况下同时发生。假设饱和仅发生在加倍操作上,那么标志Q置位,但最后结果是不饱和的。SAT意为饱和运算。 例子: QADD R0,R1,R9 ;SAT(R1+R9)R0 QDSUBLT R9,R0,R1 ;SAT(R0-SAT(R9)*2)R95.2.5ARM转移类指令转移类指令 ARM转移类指令完成循环、调用子程序和从ARM形状转向Thumb形状等功能,包括B、BL、BX和BLX指令 。 转移/转移带链接类指令 转移交换、转移带链接和交换指令BX,BLX转移转移/转移带链接类指令转移带链接类指令 功能:B、BL指令完成当前执行指令地址的转移,偏移地址量可以到达32M,B

19、L指令还可以把转移指令后第一条指令的地址放进链接存放器R14中完成衔接作用,通常用来完成子程序的调用 格式:BL 其中:Label程序相对偏移表达式。阐明:BLBranch and Link指令将下一条指令的地址拷贝到R14LR,链接存放器,并引起处置器转移到Label。BL指令L=1 , 等价于先把PCR14,再PC+offset PC。 机器级的B和BL指令限制在当前指令的22532M字节范围内。但是,即使Label超出了该范围,汇编可以运用这些指令。 例:1) 条件转移 CMP R0 , #5 ; 假设R0小于5; BLT SUB1 ; 那么转 SUB1 ; BGE SUB2 ; 否那么

20、转 SUB2。 例:2) 程序调用 BL SUB ;调用子程序SUB; ; 前往点; SUB . ; 子程序入口; MOV PC , R14 ; 执行完前往。例:3) 执行十次循环 MOV R0 , #10 ; 设置循环次数;LOOP SUBS R0 , #1 ; 循环次数减1; BNE LOOP ; 假设循环次数不0 , 继续循环; . ; 否那么终了循环。转移交换、转移带链接和交换转移交换、转移带链接和交换指令指令BX,BLX 功能: BX、BLX指令用来支持Thumb指令集,可以使处置器由ARM指令转向执行Thumb指令或者由Thumb指令前往执行ARM指令 格式: 1 BLX 存放器R

21、m 2 BLX 其中:Rm 含有转移地址的存放器。Rm的位0不用来作为地址的一部分。假设Rm的位0为1,那么指令将CPSR中的标志T置位,且将目的地址的代码解释为Thumb代码。假设Rm的位0为0,那么位1就不能为1 例: 1 无条件转移 BX R0 ; 按R0内容转移 ; 假设R00为1 ,转Thumb形状 例: 2 Thumb子程序调用CODE32 ; ARM 代码BLX TSUB ; 调用Thumb 指令TSUB子程序CODE16 ; Thumb 代码执行 TSUB ;Thumb 指令TSUB子程序 BX R14 ; 前往ARM 代码5.2.6ARM协处置器类指令协处置器类指令 ARM协

22、处置器指令完成与协处置器有关的操作,如协处置器内部存放器之间的数据传送、协处置器与存储器之间的数据传送、协处置器与CPU存放器之间的数据传送。这些指令依赖于运用的特定的协处置器,协处置器设计者可以自在地按需求设计协处置器的功能,而且这些指令通常借助于汇编器 ARM体系支持16个协处置器 针对每个协处置器的指令占用 ARM指令集中的固定部分 假设相应的协处置器不存在, 将发生一个未定义指令异常。 这有三种协处置器指令 协处置器数据处置指令 CDP:初始化协处置器数据处置操作 协处置器存放器传送指令 MRC: 从 ARM 存放器移到协处置器存放器 MCR:从协处置器存放器移到ARM 存放器 协处置

23、器存储器传送指令 LDC:从存储器装载到协处置器存放器 STC:从协处置器存放器存储到存储器CDP和和CDP2指令指令(CDP,Coprocessor Data operation) 功能:完成协处置器存放器数据操作。 格式: CDP 条件码 CP#, opcodel, CRd, CRn, CRm,opcode2 CDP2 CP#, opcodel, CRd, CRn, CRm,opcode2 其中: CP# 指令操作的协处置器名。规范名为pn,n为015范围内的整数。 Opcodel 协处置器的特定操作码。 CRn,CRm,CRn 协处置器存放器。 opcode2 可选的协处置器特定操作码。

24、例:例: CDP p1,10,c1,c2,c3 ;协处置协处置器器1中的处置器中的处置器C2和和C3完成操作完成操作10 然后将结果放在然后将结果放在C1中。中。 CDPEQ p2,5,c1,c2,c3,2 ;假设假设Z位置位置1,那么协处置器,那么协处置器2中的中的C2和和C3完成完成操作操作5子操作子操作2,然后将结果放,然后将结果放在在C1中。中。LDC和和STC指令指令 功能: 在存储器和协处置器之间传送数据 格式:1零偏移格式 LDC | STC L , CRd , Rn 2前变址格式 LDC | STC L , CRd , Rn , #offset ! LDC2 | STC2 ,

25、CRd , Rn , #offset ! 3后变址格式 LDC | STC L , CRd , Rn , #offset LDC2 |STC2 , CRd , Rn , #offset 例 1: LDC p6 , CR1 , R4 ; 将存储器中的内容取至协处置器6存放器CR1中 R4为所取内容的地址 例 2: LDC p6 , CR4 , R2 , 4 ; 将存储器中的内容取至协处置器6存放器CR4中R2+4为所取内容的地址 例 3: STC p8 , CR8 , R2 , #4 ! ; 将协处置器8存放器CR8中的内容存至存储器中R2+4为所存内容的地址 然后,R2=R2+4 例 4: S

26、TC p6 , CR9 , R2 , #-16 ; 将协处置器6存放器CR9中的内容存至存储器中 R2为所存内容的地址 然后,R2=R2-16MRC、MRC2 、MCR和和MCR2指令指令 功能:在协处置器与ARM存放器之间传送数据 格式:1从协处置器传送至ARM存放器 MRC , , Rd , CRn , CRm , MRC2 , , Rd , CRn , CRm , 2从ARM存放器传送至协处置器 MCR , , Rd , CRn , CRm , MCR2 , , Rd , CRn , CRm , 本组指令格式中一切操作数的含义同CDP和CDP2例1: MRC p15 , 5, R4 ,

27、C0 , C2, 3 ; 协处置器15中的存放器C0和C2完成操作5子操作3,然后将结果传到CPU存放器4中。例2: MCR p14 , 1, R7 , C7 , C12, 6 ; 协处置器14在CPU存放器7中完成 操作1子操作6,然后将结果传到协处置器14的存放器C12中。MCRR和和MRRC指令指令 功能:在2个ARM存放器和协处置器之间进展数据传送 格式: MRRC , , Rd, CRn, CRm MCRR , , Rd, CRn, CRm5.2.7ARM杂项指令杂项指令 形状存放器传送至通用存放器类指令 通用存放器传送至形状存放器传送指令 软件中断指令SWI 断点指令(v5T) 形

28、状存放器传送至通用存放器形状存放器传送至通用存放器类指令类指令 功能:将形状存放器的内容传送至通用存放器 格式:MRS Rd , CPSR | SPSR 其中: Rd 目的存放器,Rd不允许为R15。 R=0,将CPSR中的内容传送至目的存放器; R=1,将SPSR中的内容传送至目的存放器 注释: MRS与MSR配合运用,作为更新PSR的读修正写序列的一部分。例如:改动处置器或去除标志Q。 留意:当处置器在用户方式或系统方式下,一定不能试图访问SPSR。例: MRS R0 , CPSR ;将CPSR中的内容传送至R0 MRS R3, SPSR ;将SPSR中的内容传送至R3通用存放器传送至形状

29、存放器通用存放器传送至形状存放器传送指令传送指令 功能:将通用存放器的内容传送至形状存放器 格式: MSR CPSR_f | SPSR_f , MSR CPSR_ | SPSR_ , Rm 其中:字段可以是以下之一或多种: C: 控制域屏蔽字段PSR中的第0位到第7位; X: 扩展域屏蔽字段PSR中的第8位到第15位; S:形状域屏蔽字段PSR中的第16位到第23位; F: 标志域屏蔽字段PSR中的第24位到第31位。 immed_8r值为数字常量的表达式。常量必需对应8位位图。该位图在32位字中循环移位偶数位。 Rm 源存放器。例1: 设置N、Z、C、V标志 MSR CPSR_f , #&a

30、mp;f0000000 ;仅高8位有效,其它必需为0 例2: 仅置位C标志,保管N、Z、V标志 MRS R0 , CPSR ;将CPSR中的内容传送至R0 ORR R0 , R0 , #&20000000 ; 置位R0的第29位 MSR CPSR_f , R0 ;再将R0中的内容传送至CPSR例3: 从管理方式转到IRQ方式 MRS R0 , CPSR ; 将CPSR中的内容传送至R0 BIC R0 , R0 , #&1f ;清R0的第5位 ORR R0 , R0 , #&12 ;设置IRQ方式的标志位 MSR CPSR_c , R0 ;再将R0中的内容传送至CPSR软

31、件中断指令软件中断指令SWI 格式: SWI immed_24 其中: immed_24表达式,其值范围为0-224-1的整数24位整数 注释: SWI指令用来执行系统调用,处置器进入管理方式,并从地址0 x08开场执行指令。并不影响指令的执行,由系统所解释。CPSR保管到管理方式的SPSR中,执行转移到SWI向量。断点指令断点指令(v5T) 格式:BKPT immed_16 其中:immed_16表达式,其值为范围在065536内的整数16位整数。 注释: 支持软件调试,执行时中断正常指令,进入相应的调试子程序。BKPT指令适用于ARM v5指令系统及以上版本。 5.2.8XScale指令指

32、令 MIA乘法指令 MIAPH乘法指令 MIAxy乘法指令 MAR和MRA内部累加器访问指令 MIA乘法指令乘法指令 功能:MIA乘法指令同MLA乘法指令类似,仅仅是MIA指令将最终结果保管至acc0中 格式:MIA acc0 , Rm , Rs 其中:Rs 乘数存放器 Rm 被乘数存放器 acc0 累加器0MIAPH乘法指令乘法指令 功能:MIAPH乘法指令是将两个有符号32位数低16位相乘,高16位相乘,再相加,结果保管至acc0中 格式:MIA acc0 , Rm , Rs 其中:Rs 乘数存放器 Rm 被乘数存放器 acc0 累加器0MIAxy乘法指令乘法指令 功能:MIAxy乘法指令是两位16位有符号位数乘累加指令。x=1,Rm取高16位;x=0,Rm取低16位。y=1,Rs取高16位;y=0,Rs取低16位 格式:MIAxy acc0 , Rm , Rs 其中:Rs 乘数存放器 Rm 被乘数存放器 xy 00 MIABB 01 MIABT 10 MIATB 11 MIATT acc0 累加器0MAR和和MRA内部累加器访问内部累加器访问指令指令 功能:在ARM2个存放器和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论