1.17.ARM汇编指令集5之乘法指令

来源:互联网 发布:截面数据要做哪些检验 编辑:程序博客网 时间:2024/06/05 13:29

ARM汇编指令集之乘法指令:MUL & MLA & UMULL & UMLAL & SMULL & SMLAL


* MUL

32位乘法指令,指令将Rm和Rs中的值相乘,结果的低32位保存到Rd中。

指令格式:

MUL{cond}{S} Rd,Rm,Rs

eg:

mul r1,r2,r3        ; r1=r2*r3

muls  r0,r3,r7     ; r0=r3*r7, 同时设置CPSR中的N位和Z位


* MLA

32位乘加指令,指令将Rm和Rs中的值相乘,再将乘积的结果与第三个操作数相加,结果的低32位保存在Rd中。

指令格式:

MLA{cond}{S} Rd,Rm,Rs,Rn

eg:

mla r1,r2,r3,r0     ; r1=r2*r3+r0


* UMULL

64位无符号乘法指令,指令将Rm和Rs中的值做无符号数相乘,结果的低32位保存到RsLo中,而高32位保存到RdHi中。

指令格式:

UMULL{cond}{S} RdLo,RdHi,Rm,Rs

eg:

umull r0,r1,r5,r8     ; (r1,r0)=r5*r8


* UMLAL

64位无符号乘加指令,指令将Rm和Rs中的值做无符号数相乘,64位乘积与RdHi,RdLo相加,结果的低32位保存在RdLo中,高32位保存在RdHi中。

指令格式:

UMLAL{cond}{S} RdLo,RdHi,Rm,Rs

eg:

umlal r0,r1,r5,r8     ; (r1,r0)=r5*r8+(r1,r0)


* SMULL

64位有符号乘法指令,指令将Rm和Rs中的值做有符号数相乘,结果的低32位保存到RdLo中,高32位保存到RdHi中。

指令格式:

SMULL{cond}{S}  RdLo,RdHi,Rm,Rs

eg:

smull  r2,r3,r7,r6      ; (r3,r2)=r7*r6


* SMLAL

64位有符号乘加指令,指令将Rm和Rs中的值做有符号数相乘,64位乘积与RdHi,RdLo相加,结果的低32位保存到RdLo中,高32位保存到RdHi中。

指令格式:

SMLAL{cond}{S}  RdLo,RdHi,Rm,Rs

eg:

smlal  r2,r3,r7,r6   ; (r3,r2) = r7*r6+(r3,r2)