Volume 4: Base IA-32 Instruction Reference
4:185
FSUBR/FSUBRP/FISUBR—Reverse Subtract
Description
Subtracts the destination operand from the source operand and stores the difference in
the destination location. The destination operand is always an FPU register; the source
operand can be a register or a memory location. Source operands in memory can be in
single-real, double-real, word-integer, or short-integer formats.
These instructions perform the reverse operations of the FSUB, FSUBP, and FISUB
instructions. They are provided to support more efficient coding.
The no-operand version of the instruction subtracts the contents of the ST(1) register
from the ST(0) register and stores the result in ST(1). The one-operand version
subtracts the contents of the ST(0) register from the contents of a memory location
(either a real or an integer value) and stores the result in ST(0). The two-operand
version, subtracts the contents of the ST(
i
) register from the ST(0) register or vice
versa.
The FSUBRP instructions perform the additional operation of popping the FPU register
stack following the subtraction. To pop the register stack, the processor marks the
ST(0) register as empty and increments the stack pointer (TOP) by 1. The no-operand
version of the floating-point reverse subtract instructions always results in the register
stack being popped. In some assemblers, the mnemonic for this instruction is FSUBR
rather than FSUBRP.
The FISUBR instructions convert an integer source operand to extended-real format
before performing the subtraction.
The following table shows the results obtained when subtracting various classes of
numbers from one another, assuming that neither overflow nor underflow occurs. Here,
the DEST value is subtracted from the SRC value (SRC
DEST = result).
Opcode
Instruction
Description
D8 /5
FSUBR
m32real
Subtract ST(0) from
m32real
and store result in ST(0)
DC /5
FSUBR
m64real
Subtract ST(0) from
m64real
and store result in ST(0)
D8 E8+i
FSUBR ST(0), ST(i)
Subtract ST(0) from ST(
i
) and store result in ST(0)
DC E0+i
FSUBR ST(i), ST(0)
Subtract ST(
i
) from ST(0)
and store result in ST(
i
)
DE E0+i
FSUBRP ST(i), ST(0)
Subtract ST(0) from ST(
i
), store result in ST(
i
), and pop register
stack
DE E1
FSUBRP
Subtract ST(1) from ST(0), store result in ST(1), and pop
register stack
DA /5
FISUBR
m32int
Subtract ST(0) from
m32int
and store result in ST(0)
DE /5
FISUBR
m16int
Subtract ST(0) from
m16int
and store result in ST(0)
Содержание ITANIUM ARCHITECTURE
Страница 1: ......
Страница 7: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 199: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Страница 269: ...4 262 Volume 4 Base IA 32 Instruction Reference LES Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 270: ...Volume 4 Base IA 32 Instruction Reference 4 263 LFS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 273: ...4 266 Volume 4 Base IA 32 Instruction Reference LGS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 288: ...Volume 4 Base IA 32 Instruction Reference 4 281 LSS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 352: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Страница 368: ...Volume 4 Base IA 32 Instruction Reference 4 361 SHL SHR Shift Instructions See entry for SAL SAR SHL SHR ...
Страница 373: ...4 366 Volume 4 Base IA 32 Instruction Reference SIDT Store Interrupt Descriptor Table Register See entry for SGDT SIDT ...
Страница 589: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Страница 590: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Страница 591: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 603: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...
Страница 604: ......