All 80387 floating point types except packed BCD are supported. (BCD support may be added without much difficulty). These data types are 16-, 32-, and 64- bit integers, and single (32-bit), double (64-bit), and extended (80-bit) precision floating point. Each supported type has an instruction mnemonic suffix and a constructor associated with it. Instruction mnemonic suffixes specify the operand's data type. Constructors build these data types into memory.
.tfloatfor 32-, 64-, and 80-bit formats. These correspond to instruction mnemonic suffixes
tstands for 80-bit (ten byte) real. The 80387 only supports this format via the
fldt(load 80-bit real to stack top) and
fstpt(store 80-bit real and pop stack) instructions.
.quadfor the 16-, 32-, and 64-bit integer formats. The corresponding instruction mnemonic suffixes are
q(quad). As with the 80-bit real format, the 64-bit
qformat is only present in the
fildq(load quad integer to stack top) and
fistpq(store quad integer and pop stack) instructions.
Register to register operations should not use instruction mnemonic suffixes.
fstl %st, %st(1) will give a warning, and be assembled as if you
fst %st, %st(1), since all register to register operations
use 80-bit floating point operands. (Contrast this with
fstl %st, mem,
%st from 80-bit to 64-bit floating point format,
then stores the result in the 4 byte location