beautypg.com

Fsubr/fsubrp/fisubr-reverse subtract, Fsubr/fsubrp/fisubr—reverse subtract – Intel 253666-024US User Manual

Page 448

background image

3-402 Vol. 2A

FSUBR/FSUBRP/FISUBR—Reverse Subtract

INSTRUCTION SET REFERENCE, A-M

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-precision or double-precision floating-point format or in word or
doubleword integer format.
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 floating-point 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

Opcode

Instruction

64-Bit

Mode

Compat/

Leg Mode

Description

D8 /5

FSUBR m32fp

Valid

Valid

Subtract ST(0) from m32fp and

store result in ST(0).

DC /5

FSUBR m64fp

Valid

Valid

Subtract ST(0) from m64fp and

store result in ST(0).

D8 E8+i

FSUBR ST(0), ST(i)

Valid

Valid

Subtract ST(0) from ST(i) and

store result in ST(0).

DC E0+i

FSUBR ST(i), ST(0)

Valid

Valid

Subtract ST(i) from ST(0) and

store result in ST(i).

DE E0+i

FSUBRP ST(i), ST(0)

Valid

Valid

Subtract ST(i) from ST(0), store

result in ST(i), and pop register

stack.

DE E1

FSUBRP

Valid

Valid

Subtract ST(1) from ST(0), store

result in ST(1), and pop register

stack.

DA /5

FISUBR m32int

Valid

Valid

Subtract ST(0) from m32int and

store result in ST(0).

DE /5

FISUBR m16int

Valid

Valid

Subtract ST(0) from m16int and

store result in ST(0).