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 opcode suffix and a constructor associated with it. Opcode suffixes specify operand's data types. Constructors build these data types into memory.
Register to register operations do not require opcode suffixes, so that `fst %st, %st(1)' is equivalent to `fstl %st, %st(1)'.
Since the 80387 automatically synchronizes with the 80386 `fwait'
instructions are almost never needed (this is not the case for the
80286/80287 and 8086/8087 combinations). Therefore, as
suppresses
the `fwait' instruction whenever it is implicitly selected by one
of the `fn...' instructions. For example, `fsave' and
`fnsave' are treated identically. In general, all the `fn...'
instructions are made equivalent to `f...' instructions. If
`fwait' is desired it must be explicitly coded.