Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3 Manual page 1487

Hide thumbs Also See for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3:
Table of Contents

Advertisement

FSUBR/FSUBRP/FISUBR—Reverse Subtract
Opcode
D8 /5
DC /5
D8 E8+i
DC E0+i
DE E0+i
DE E1
DA /5
DE /5
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).
Volume 4: Base IA-32 Instruction Reference
Instruction
Description
FSUBR m32real
Subtract ST(0) from m32real and store result in ST(0)
FSUBR m64real
Subtract ST(0) from m64real and store result in ST(0)
FSUBR ST(0), ST(i)
Subtract ST(0) from ST( i ) and store result in ST(0)
Subtract ST( i ) from ST(0)  and store result in ST( i )
FSUBR ST(i), ST(0)
FSUBRP ST(i), ST(0)
Subtract ST(0) from ST( i ), store result in ST( i ), and pop register
stack
FSUBRP
Subtract ST(1) from ST(0), store result in ST(1), and pop
register stack
FISUBR m32int
Subtract ST(0) from m32int and store result in ST(0)
FISUBR m16int
Subtract ST(0) from m16int and store result in ST(0)
4:185

Advertisement

Table of Contents
loading

This manual is also suitable for:

Itanium architecture 2.3

Table of Contents