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

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)


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值