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

时间:2013-09-30来源:网络

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)对应的ARM指令

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)对应的ARM指令

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)对应的ARM指令

RSBSRd>,Rm>,#0

1 2 3 4 5 6 7 8 9 10 11 12 13

关键词: Thumb指令集 数据处理指令 ARM MOV指令 移位指令

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版