4.4.6. SMUAD{X} 和 SMUSD{X}

两次 16 位有符号乘法,然后将两个乘积相加或相减,可选择交换操作数的高半字和低半字。

语法

op{X}{cond} {Rd}, Rn, Rm

其中:

op

是下列项之一:

SMUAD

两次乘法,然后将乘积相加。

SMUSD

两次乘法,然后将乘积相减。

X

是一个可选的参数。 如果有 X,则在相乘之前,会先交换第二个操作数的高半字和低半字。

cond

是一个可选的条件代码(请参阅条件执行)。

Rd

是目标寄存器。

Rn, Rm

是存放操作数的寄存器。

不要将 r15 用作 RdRnRm

用法

SMUAD 可将 Rn 的低半字与 Rm 的低半字相乘,Rn 的高半字与 Rm 的高半字相乘。 然后,将两个乘积相加,并将结果存入 Rd

SMUSD 可将 Rn 的低半字与 Rm 的低半字相乘,Rn 的高半字与 Rm 的高半字相乘。 然后,从第一个乘积中减去第二个乘积,并将差值存入 Rd

条件标记

如果进行加法运算时溢出,SMUAD 指令将设置 Q 标记。

体系结构

这些指令可用于 ARMv6 及更高版本,以及 ARMv5 的 E 变体。

这些 32 位 Thumb 指令可用于 ARMv6T2 及更高版本(ARMv7-M 架构除外)。

这些指令均无 16 位 Thumb 版本。

示例

    SMUAD       r2, r3, r2
    SMUSDXNE    r0, r1, r2
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential