arm嵌入式系统ppt1.ppt
上传人:sy****28 上传时间:2024-09-15 格式:PPT 页数:130 大小:2.4MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

arm嵌入式系统ppt1.ppt

arm嵌入式系统ppt1.ppt

预览

免费试读已结束,剩余 120 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四章ARM指令集(一)ARM指令集概述1.1ARM指令分类ARM指令集总体分为6类指令数据处理指令:完成寄存器中数据的算术和逻辑运算操作。程序状态寄存器处理指令:mrs和msr。跳转指令:b和bl。Load/Store指令:唯一用于寄存器和存储器之间进行数据传送的指令。异常中断产生指令:swi和bkpt。协处理器指令。1.2ARM指令的特点:所有指令都是32bit。大多数指令都在单周期内完成。所有指令都可以条件执行。load/store体系结构。指令集可以通过协处理器扩展1.3ARM指令的格式一条典型的ARM指令编码格式为:1.4条件执行每条ARM指令包含4位条件码域<cond>,它占用指令编码的最高四位[31:28]。条件编码共24=16种,其中,15种用于指令的条件码。每种条件码用2个英文缩写字符表示。(见P.101表3-1)ARM处理器根据指令的执行条件是否满足,决定当前指令是否执行。只有在cpsr中的条件标志位满足指定的条件时,指令才会被执行。不符合条件的代码依然占用一个时钟周期(相当于一个NOP指令)。书写时,条件码的位置在指令助记符的后面(因此也称为条件后缀。),例如:MOVEQR0,R1;指令条件后缀如下表所示:(见P.101表3-1)NV默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位。CMP不需要增加“S”就可改变相应的标志位。loop…SUBSr1,r1,#1BNEloop(二)ARM寻址方式寻址方式:根据指令编码中给出的地址码字段来寻找真实操作数的方式。2.1立即寻址数据处理指令格式中,第二个操作数有12位因此有效立即数immediate可以表示成:<immediate>=immed_8循环右移(2×rot)4bit移位值(0-15)乘于2,得到一个范围在0-30,步长为2的移位值。记住一条准则:“最后8位一定要移动偶数位”。0只有能够通过此构造方法得到的才是合法的立即数。合法立即数:0xFF;0x104;0xFF0;0xFF00非法立即数:0x101;0x102;0xFF1一个合法的立即数可能有多种编码方法,将使某些指令的执行产生不同的结果。0x3F02.2寄存器寻址寄存器移位寻址——当第二操作数为寄存器型时,在执行寄存器寻址操作时,可以选择是否对第二操作数进行移位,即第二操作数形如:MOVRd,Rn,Rm,{<shift>}其中:Rm称为第二操作数寄存器<shift>用来指定移位类型和移位位数。移位位数可以用5位立即数<#shift>或寄存器(Rs)方式。在指令执行时将寄存器移位后的内容作为第二操作数参与运算。例如指令:ADDR3,R2,R1,LSR#2;R3←R2+(R1右移2位)ADDR3,R2,R1,LSRR0;R3←R2+(R1右移R0位)第二操作数移位方式LSL:逻辑左移,空出的最低有效位用0填充。LSR:逻辑右移,空出的最高有效位用0填充。ASL:算术左移,由于左移空出的有效位用0填充,因此它与LSL同义。ASR:算术右移(ArithmeticShiftRight)。算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用0填充,如果是负数用1填充。300ROR:循环右移(RotateRight),移出的字的最低有效位依次填入空出的最高有效位。310RRX:带扩展的循环右移(RotateRightExtended)。将寄存器的内容循环右移1位,空位用原来C标志位填充。310第二操作数的移位位数移位位数可以用立即数方式或者寄存器方式给出,如下所示:ADDR3,R2,R1,LSR#2;R3R2+(R1右移2位)ADDR3,R2,R1,LSRR4;R3R2+(R1右移R4位)寄存器R1的内容分别逻辑右移2位、R4位,再与寄存器R2的内容相加,结果放入R3中。2.3寄存器间接寻址2.4基址加偏址寻址(变址寻址)有三种加偏址的方式:前变址模式(不修改基址寄存器):——先基址+偏址,生成操作数地址,做指令指定的操作。自动变址模式(修改基址寄存器):——①先基址+偏移,生成操作数地址,做指令指定的操作。②然后自动修改基址寄存器。例如:LDRR0,[R1,#4]!;R0←mem32[R1+4];R1←R1+4!——表示更新基址寄存器。后变址模式(修改基址寄存器):——①基址寄存器不加偏移作为操作数地址。②完成指令操作后,用(基址+偏移)的值修改基址寄存器。偏移地址——可以是一个立即数,也可以是