文档详情

ARM嵌入式系统结构与编程:第4章 ARM指令集系统.ppt

发布:2025-03-27约5.21千字共51页下载文档
文本预览下载声明

(2)MLAMLA{cond}{S}Rd,Rm,Rs,RnMLA指令实现两个32位的数(可以为无符号数,也可为有符号数)的乘积,再将乘积(Rm*Rs)加上第3个操作数Rn,并将结果存放到一个32位的寄存器Rd中;如果指令包含后缀“S”,则根据操作结果更新CPSR中的相应条件标志位。例:MLASR0,R1,R2,R32.64位乘法指令(1)UMULLUMULL{cond}{S}RdLo,RdHi,Rm,RsUMULL指令实现两个32位无符号数的乘积,乘积结果的高32位存放到一个32位的寄存器RdHi中,乘积结果的低32位存放到另一个32位的寄存器RdLo中;如果指令包含后缀“S”,则根据操作结果更新CPSR中的相应条件标志位。例:UMULLR0,R1,R2,R3(2)UMLALUMLAL{cond}{S}RdLo,RdHi,Rm,RsUMLAL指令将两个32位无符号数的64位乘积结果与由(RdHi:RdLo)表示的64位无符号数相加,结果的高32位存放到寄存器RdHi中,结果的低32位存放到寄存器RdLo中;如果指令包含后缀“S”,则根据操作结果更新CPSR中的相应条件标志位。例:UMLALR0,R1,R2,R3(3)SMULLSMULL{cond}{S}RdLo,RdHi,Rm,RsSMULL指令实现两个32位有符号数的乘积,乘积结果的高32位存放到一个32位的寄存器的RdHi,乘积结果的低32位存放到另一个32位的寄存器的RdLo;如果指令包含后缀“S”,则根据操作结果更新CPSR中的相应条件标志位。例4-21写出执行完下面的程序段后,[R3:R2]、[R5:R4]所存放的64位乘法结果分别为多少?(验证) MVNR0,#0x0 MOVR1,#0x1 UMULLR2,R3,R1,R0 SMULLR4,R5,R1,R0;(4)SMLALSMLAL{cond}{S}RdLo,RdHi,Rm,RsSMLAL指令将两个32位有符号数的64位乘积结果与由(RdHi:RdLo)表示的64位无符号数相加,加法结果的高32位存放到寄存器RdHi中,乘积结果的低32位存放到寄存器RdLo中;如果指令包含后缀“S”,则根据操作结果更新CPSR中的相应条件标志位。杂类数据处理指令前导零计数指令:CLZCLZcondRd,Rm从ARMV5版本指令系统开始支持该指令,计算32位寄存器操作数从第31位开始连续“0”位的个数,主要用于计算操作数规范化。例: MOVR4,#0xAA CLZ R2,R44.2ARM分支指令分支指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转:使用专门的分支指令。直接向程序计数器PC写入跳转地址值。ARM分支指令可以实现从当前指令向前或向后的32M的地址空间跳转。通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV??LR,PC等类似指令,能够保存程序的返回地址值,从而实现在4GB连续地址空间的子程序调用。*TM**TM第4章 ARM指令集系统ARM微处理器的指令集可以分为数据处理指令、分支指令、加载/存储指令、批量加载/存储指令、交换指令、程序状态寄存器(PSR)处理指令、协处理器指令和异常产生指令八大类。本章将分类介绍ARM指令语法格式、指令编码格式和ARM指令的详细功能。内容提要4.1数据处理指令4.2ARM分支指令4.3加载/存储指令4.4批量加载/存储指令4.5交换指令4.6程序状态寄存器PSR访问指令4.7协处理器操作指令4.8异常产生指令4.1.1基本数据处理指令ARM基本的数据处理指可以分为4类:数据传送指令、算术运算指令、逻辑运算指令和比较指令。ARM基本的数据处理指令汇编指令语法格式:opcode{cond}{S}Rd,Rn,operand24.1数据处理指令1.数据传送指令MOV指令MOV指令的汇编语法格式为MOV{cond}{S}Rd,operand2 将第二操作数operand2表示的数据传送到目标寄存器Rd中;如果指令包含后缀“S”,则根据操作结果或移位情况更新CPSR中的相应条件标志位(N、Z和C)。1.数据传送指令指令中包含S时:如果指令中的目标寄存器Rd为R15,则当前处理器模式对应

显示全部
相似文档