|
乘法指令与乘加指令
1.MUL 32位乘法指令
2.MLA 32位乘加指令
3.SMULL 64位有符号乘法指令
4.SMLAL 64位有符号乘加指令
5.UMULL 64位无符号乘法指令
6.UMLAL 64位无符号乘加指令
注意:
1. 指令中的所有操作数、目的地址寄存器必须为通用寄存器
2. 不能对操作数使用立即数或被移位的寄存器
3. 目的寄存器和操作数1必须是不同的寄存器
MUL指令:
MUL指令完成将操作数1与操作数2的乘法运算,并把结果放到目的寄存器中,同时可以根据运算结果设置CPSR中相应的条件标志位
指令格式:MUL{条件}{S} 目的寄存器,操作数1,操作数2
MULS R0,R1,R2 ;R0 = R1 × R2,同时设置CPSR 中的相关条件标志位
MLA指令:
MLA 指令完成将操作数1与操作数2的乘法运算,再将乘积加上操作数3,并把结果放置
到目的寄存器中,同时可以根据运算结果设置CPSR中相应的条件标志位
指令格式:MLA{条件}{S} 目的寄存器,操作数1,操作数2,操作数3
MLAS R0,R1,R2,R3 ;R0 = R1 × R2 + R3,同时设置CPSR 中的相关条件标志位
SMULL指令:
SMULL 指令完成将操作数1与操作数2的乘法运算,并把结果的低32位放置到目的寄存器Low中,结果的高32位放置到目的寄存器High中,同时可以根据运算结果设置CPSR中相应的条件标志位
指令格式:SMULL{条件}{S} 目的寄存器Low,目的寄存器低High,操作数1,操作数2
SMULL R0,R1,R2,R3 ;R0 = (R2 × R3)的低32 位
;R1 = (R2 × R3)的高32 位
SMLAL指令:
SMLAL 指令完成将操作数1 与操作数2 的乘法运算,并把结果的低32位同目的寄存器Low 中的值相加后又放置到目的寄存器Low中,结果的高32位同目的寄存器High中的值相加后又放置到目的寄存器High中,同时可以根据运算结果设置CPSR中相应的条件标志位
指令格式:SMLAL{条件}{S} 目的寄存器Low,目的寄存器低High,操作数1,操作数2
SMLAL R0,R1,R2,R3 ;R0 = (R2 × R3)的低32 位+ R0
;R1 = (R2 × R3)的高32 位+ R1
UMULL指令:
UMULL 指令完成将操作数1与操作数2的乘法运算,并把结果的低32位放置到目的寄存器Low中,结果的高32位放置到目的寄存器High中,同时可以根据运算结果设置CPSR中相应的条件标志位
指令格式:UMULL{条件}{S} 目的寄存器Low,目的寄存器低High,操作数1,操作数2
UMULL R0,R1,R2,R3 ;R0 = (R2 × R3)的低32 位
;R1 = (R2 × R3)的高32 位
UMLAL指令:
UMLAL 指令完成将操作数1 与操作数2 的乘法运算,并把结果的低32位同目的寄存器Low中的值相加后又放置到目的寄存器Low 中,结果的高32位同目的寄存器High 中的值相加后又放置到目的寄存器High中,同时可以根据运算结果设置CPSR中相应的条件标志位
指令格式:UMLAL{条件}{S} 目的寄存器Low,目的寄存器低High,操作数1,操作数2
UMLAL R0,R1,R2,R3 ;R0 = (R2 × R3)的低32 位+ R0
;R1 = (R2 × R3)的高32 位+ R1
|
|