Intel 64 and IA-32 Architectures Software Developers Manual Volume 1, Basic Architecture

8-22 Vol. 1
PROGRAMMING WITH THE X87 FPU
8.3 X86 FPU INSTRUCTION SET
The floating-point instructions that the x87 FPU supports can be grouped into six
functional categories:
Data transfer instructions
Basic arithmetic instructions
Comparison instructions
Transcendental instructions
Load constant instructions
x87 FPU control instructions
See Section 5.2, “x87 FPU Instructions,” for a list of the floating-point instructions by
category.
The following section briefly describes the instructions in each category. Detailed
descriptions of the floating-point instructions are given in the Intel® 64 and IA-32
Architectures Software Developer’s Manual, Volumes 3A & 3B.
8.3.1 Escape (ESC) Instructions
All of the instructions in the x87 FPU instruction set fall into a class of instructions
known as escape (ESC) instructions. All of these instructions have a common opcode
format, where the first byte of the opcode is one of the numbers from D8H through
DFH.
8.3.2 x87 FPU Instruction Operands
Most floating-point instructions require one or two operands, located on the x87 FPU
data-register stack or in memory. (None of the floating-point instructions accept
immediate operands.)
When an operand is located in a data register, it is referenced relative to the ST(0)
register (the register at the top of the register stack), rather than by a physical
register number. Often the ST(0) register is an implied operand.
Operands in memory can be referenced using the same operand addressing methods
described in Section 3.7, “Operand Addressing.
8.3.3 Data Transfer Instructions
The data transfer instructions (see Table 8-4) perform the following operations:
Load a floating-point, integer, or packed BCD operand from memory into the
ST(0) register.