divd (除双字) 指令

用途

将通用寄存器的内容除以通用寄存器的内容,将结果存储到通用寄存器中。

此指令仅应在运行 64 位应用程序的 64 位 PowerPC® 处理器上使用。

语法

位数 VALUE
0-5 31
6-10 D
11-15 A
16-20 B
21 OE
22-30 489
31 Rc
PowerPC64
分部 RT RA RB (OE=0 Rc=0)
divd。 RT RA RB (OE=0 Rc=1)
司长 RT RA RB (OE=1 Rc=0)
迪夫多 RT RA RB (OE=1 Rc=1)

描述

64 位红利是 RA的内容。 64 位除数是 RB的内容。 将 64 位商放入 RT中。 因此未提供其余部分。

操作数和商都被解释为有符号整数。 商是满足等式-股息 = (商 * 除数) + r 的唯一带符号整数,其中,如果股息为非负数,则 0 <= r < |除数|;如果股息为负数,则-|除数| < r <=0。

如果尝试执行除法0x8000_0000_0000_0000/-1或 /0,RT的内容将无法定义,条件寄存器 0 字段中的 LT、GT 和 EQ 位的内容也是如此(如果记录位 (Rc) = 1,则divd.divdo 。 指令))。 在这种情况下,如果溢出启用 (OE) = 1 ,那么将设置溢出位 (OV)。

除 (RA ) = -2 **63 和 (RB ) = -1 的情况外, (RA ) 除以 (RB ) 的 64 位有符号余数可按如下方法计算:

描述
分部 RT , RA 和 RB # RT = 商
mulld RT , RT 和 RB # RT = 商 * 除数
子 f RT , RT 和 RA # RT = 余数

参数

描述
RT 指定计算结果的目标通用寄存器。
RA 指定红利的源通用寄存器。
经常预算 指定除数的源通用寄存器。

实现

仅为 64 位实现定义此指令。 在 32 位实现上使用它将导致调用系统非法指令错误处理程序。