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 位实现上使用它将导致调用系统非法指令错误处理程序。