ARM有两类乘法指令:一类为32位的乘法指令,即乘法操作的结果为32位;另一类为64位的乘法指令,即乘法操作的结果为64位。
(1)MUL 32位乘法指令
MUL提供32位整数乘法。如果操作数是有符号的,则可以假定结果也是有符号的。
(2)MLA 32位带加法的乘法指令
MLA的行为同MUL,但它把操作数3的值加到结果上,这在求总和时有用。
(3)SMULL 64位有符号数乘法指令
SMULL指令实现两个32位的有符号数的乘积,乘积结果的高32位存放到一个32位的寄存器<RdHi>中,低32位存放到另一个32位的寄存器(RdLo>中,同时可以根据运算结果设置CPSR寄存器中相应的条件标志位。考虑指令执行的效率,指令中所有操作数都放在寄存器中。
(4)SMLAL 64位带加法的有符号数乘法指令
SMLAL指令将两个32位有符号数的64位乘积结果与<RdLo>和<RdHi>中的64位数相加,相加结果的高32位存放到一个32位的寄存器<RdHi)中,低32位存放到另一个32位的寄存器(RdLo>中,同时可以根据运算结果设置∷CPSR寄存器中相应的条件标志位。
(5)UMULL 64位无符号数乘法指令
UMULL指令实现两个32位有符号数的乘积,乘积结果的高32位存放到一个32位的寄存器<RdHi)中,乘积结果的低32位存放到另一个32位的寄存器(RdLo>中,同时可以根据运算结果设置CPSR寄存器中相应的条件标志位。考虑指令执行的效率,指令中所有操作数都放在寄存器中。
(6)UMLAL 64位带加法的无符号数乘法指令
UMLAL指令将两个32位无符号数的64位乘积结果与<RdLo>和<RdHi>中的64位无符号数相加,相加结果的高32位存放到一个32位的寄存器(RdHi)中,低32位存放到另一个32位的寄存器<RdLo>中,同时可以根据运算结果设置CPSR寄存器中相应的条件标志位。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。