新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Thumb指令集之:Thumb数据处理指令

Thumb指令集之:Thumb数据处理指令

作者: 时间:2013-09-30 来源:网络 收藏

本文引用地址:https://www.eepw.com.cn/article/257041.htm

11.4.25乘法指令MUL

(1)编码格式

乘法指令MUL的编码格式如图11.31所示。

图11.31MUL指令的编码格式

MUL指令实现两个数(可以为无符号数,也可以为有符号数)的乘积,并将指令的执行结果存放到一个32位的寄存器中,同时可以根据运算结果设置CPSR寄存器中相应的条件标志位。

(2)指令的语法格式

MULRd>,Rm>

①Rd>

目的寄存器,存放乘法操作的第一个乘数。

②Rm>

第二个乘数所在寄存器。

(3)指令操作的伪代码

Rd=(Rm*Rd)[31:0]

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=unaffected

VFlag=unaffected

注意

如果乘法指令MUL的源和目的寄存器使用相同的寄存器,则指令的执行结果不可预知;对于有符号数和无符号数,指令的操作结果是一样的。

(4)对应的指令

MULSRd>,Rm>,Rd>

11.4.26传送指令MVN

(1)编码格式

传送指令MVN的编码格式如图11.32所示。

图11.32MVN指令的编码格式

MVN指令将一个数的反码传送到目标寄存器,并根据指令的执行结果更新CPSR中相应的条件标志位。

(2)指令的语法格式

MVNRd>,Rm>

①Rd>

目的寄存器,存放指令的操作结果。

②Rm>

源寄存器,存放要传送反码的数据。

(3)指令操作的伪代码

Rd=NOTRm

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=unaffected

VFlag=unaffected

(4)对应的指令

MVNSRd>,Rm>

11.4.27取反指令NEG

(1)编码格式

取反指令NEG的编码格式如图11.33所示。

图11.33NEG指令的编码格式

NEG取反指令将一个寄存器的值取反存入另一个寄存器。同时根据指令的操作结果更新CPSR中相应的条件标志位。

(2)指令的语法格式

NEGRd>,Rm>

①Rd>

目的寄存器,存放指令的操作结果。

②Rm>

源寄存器,包含将要被取反的数据。

(3)指令操作的伪代码

Rd=0–Rm

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=NOTBorrowFrom(0-Rm)

VFlag=OverflowFrom(0-Rm)

(4)对应的指令

RSBSRd>,Rm>,#0



评论


相关推荐

技术专区

关闭