嵌入式ppt解析
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
R11,#20 R10,#0 R0,[R8],#4 R1,[R9],#4 R10,R0,R1, R10 R11,R11,#1 LOOP
;初始化循环次数 ;初始化总和 ;读取第一分量 ;读取第二分量 ;乘积累加 ;减循环记数
2、 Load/Store指令
ARM处理器,是Load/store型的,即它对数据的操作是通过将数据从存储
1、数据处理指令
乘法指令:
32位乘法: MUL {<cond>} {S} Rd, Rm, Rs ;Rd=(Rm*Rs)[31:0] MLA {<cond>} {S} Rd, Rm, Rs, Rn ;Rd=(Rm*Rs+Rn)[31:0] 64位乘法指令: UMULL {<cond>} {S} RdHi, RdLo, Rm, Rs ; RdHi: RdLo = Rm * Rs UMLAL {<cond>} {S} RdHi, RdLo, Rm, Rs ; RdHi: RdLo += Rm * Rs ;乘法(32位结果)
器加载到片内寄存器中进行处理,处理完成后的结果经过寄存器存回到存 储器中,以加快对片外存储器进行数据处理的执行速度。ARM的数据存取 指令Load/Store是唯一用于寄存器和存储器之间进行数据传送的指令。
在ARM系统中,输入/输出(I/O)功能,是通过存储器映射的可寻址外围
寄存器和中断输入的组合来实现的。外围设备中有一些寄存器,在存储器 映射系统中,这些寄存器映射为存储器的地址(也就是外设寄存器与存储 器统一编址),对这些寄存器的操作(例如读写)可以像对存储器的操作
数据处理中r15的使用
r15(PC)作为特殊的寄存器,控制程序的运行地址,同时它也可以
作为一般寄存器,但使用时必须注意细节问题。
寄存器r15用作源操作数,但是不能用来指定移位位数Βιβλιοθήκη Baidu在使用寄存器
指定移位位数的情况下,三个源操作数都不能是r15。当r15用作源操 作数时,三级流水线操作使得真实PC值为当前指令的地址加8个字节。
所有的操作数都是32位宽,或来自寄存器,或是在指令中定义的立即数(符号或0扩 展);
如果数据操作有结果,则结果为32位宽,放在一个寄存器中。(有一个例外:长乘指
令产生64位的结果); ARM指令中使用“3地址模式”,即每一个操作数寄存器和结果寄存器在指令中分别 指定。
数据处理指令根据指令实现处理功能可分为以下六类:
效,如果使用,则指令执行的结果是不可预知的,但汇编器在汇编时
并不发出警告。
1、数据处理指令
64位整数加法: ADDS R4,R0,R2 ADC R5,R1,R3 ;加低有效位 ;加高有效位
96位减法:
SUBS SBCS SBC BIC BIC R3,R6,R9 R4,R7,R10 R5,R8,R11 R0,#01 R0,R10,#01 ;R0[0]=0; ;R0[0]=0;
;乘——累加(32位结果)
;无符号数长乘 ;无符号数长乘——累加
SMULL {<cond>} {S} RdHi, RdLo, Rm, Rs ; RdHi: RdLo = Rm * Rs
SMLAL {<cond>} {S} RdHi, RdLo, Rm, Rs ; RdHi: RdLo += Rm * Rs
;有符号数长乘
;有符号数长乘——累加
1、数据处理指令
例如: MUL R1,R2,R3 MULS R0,R3,R7 ;R1=R2*R3 ;R0=R3*R7,
MLA
;同时设置CPSR中的N位和Z位。 R1,R2,R3,R0 ;R1=R2*R3+R0
SMULL R0,R1,R2,R3 ;R0=R2*R3的低32位, ;R1=R2*R3的高32位 SMLAL R0,R1,R2,R3 ;(R1,R0)=R2*R3+(R1,R0)
r15用作目的寄存器时,指令的功能相当于某种形式的转移指令,执行
转移到结果对应的地址执行程序,常用来作为子程序返回。
若r15作为目的寄存器且使用了后缀“S”,即设置了S位,则将当前模
式的SPSR拷贝到CPSR,这可能影响到中断使能标志位和处理器操作 模式。这种机制自动恢复PC和CPSR,是实现异常返回的标准方式。 因为在用户及系统模式没有SPSR,在这两种模式下这种形式的指令无
3.1.3 ARM指令的详细介绍
ARM指令集总体分为以下6类:
数据处理指令; 程序状态寄存器与通用寄存器之间的传送指令;
Load/Store指令;
转移指令; 异常中断指令; 协处理器指令。
1、数据处理指令
ARM的数据处理指令主要完成寄存器中数据的算术和逻辑运算操作。
ARM数据处理指令的基本原则为:
UMULL R0,R1,R2,R3 ;(R1,R0)=R2*R3 UMLAL R0,R1,R2,R3 ; (R1,R0)=R2*R3+(R1,R0)
乘法举例:
形成两个矢量的标量积:每个矢量有20个分量, 每个分量为一个字,但它的值小于两个字节(演示)。
MOV MOV LOOP LDR LDR MLA SUBS BNE
数据传送指令; 算术运算指令; 逻辑运算指令;
比较指令;
测试指令; 乘法指令。
1、数据处理指令
根据第二操作数的类型,其汇编格式分为以下两种: <op> {<cond>} {S} Rd, Rn, #<32位立即数> <op> {<cond>} {S} Rd, Rn, Rm,{<shift>} ARM数据处理指令,使用两个源操作数和一个目的寄存器 (Rd)的“3地址模式”,一个源操作数(Rn)总是寄存 器,第二个被称为“灵活的第二操作数operand2”,它可 以是寄存器、移位后的寄存器或立即数。 如果第二操作数是寄存器Rm,它的移位可能是逻辑 移位、算术移位或是循环移位,移位的位数可以是立即数, 也可以是寄存器的内容。 当指令为仅需要一个源操作数的指令(如MOV、MVN)时, 省略Rn;当指令为仅产生条件码输出的比较测试指令 (CMP、CMN、TST、TEQ)时省略Rd。这些指令中不需 要全部的可用操作数,这种不用的寄存器在二进制编码中 的寄存器域中应该设置为0。