FSUBR/FSUBRP/FISUBR—Reverse Subtract (Continued)
When the difference between two operands of like sign is 0, the result is +0, except for
the round toward
guarantees that +0 (0) = +0, and that 0 (+0) = 0. When the source operand is
an integer 0, it is treated as a +0.
When one operand is , the result is of the expected sign. If both operands are of
the same sign, an invalid-operation exception is generated.
Table 2-10.
DEST
Notes:
Fmeans finite-real number.
Imeans integer.
*indicates floating-point invalid-arithmetic-operand (#IA) exception.
Operation
IF instruction is FISUBR
THEN
DEST ConvertExtendedReal(SRC) DEST;
ELSE (* source operand is real number *)
DEST SRC DEST;
FI;
IF instruction = FSUBRP
THEN
PopRegisterStack
FI;
FPU Flags Affected
C1
C0, C2, C3
4:186
mode, in which case the result is 0. This instruction also
FSUBR Zeros and NaNs
F
*
+
F or I
F or 0
0
SRC
+ 0
SRC
F
+ F or +I
+
NaN
NaN
NaN
Set to 0 if stack underflow occurred.
Indicates rounding direction if the inexact-result exception (#P) fault
is generated: 0 = not roundup; 1 = roundup.
Undefined.
SRC
0
+ 0
+ F
+
+
+
DEST
DEST
+ F
0
+0
SRC
0
0
SRC
DEST
DEST
F or 0
NaN
NaN
NaN
Volume 4: Base IA-32 Instruction Reference
+
NaN
+
NaN
+
NaN
+
NaN
+
NaN
+
NaN
*
NaN
NaN
NaN