as: i386-Float

 
 9.15.9 Floating Point
 ---------------------
 
 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.
 
    * Floating point constructors are '.float' or '.single', '.double',
      and '.tfloat' for 32-, 64-, and 80-bit formats.  These correspond
      to instruction mnemonic suffixes 's', 'l', and 't'.  't' stands 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.
 
    * Integer constructors are '.word', '.long' or '.int', and '.quad'
      for the 16-, 32-, and 64-bit integer formats.  The corresponding
      instruction mnemonic suffixes are 's' (single), 'l' (long), and 'q'
      (quad).  As with the 80-bit real format, the 64-bit 'q' format 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 wrote 'fst %st, %st(1)', since all register to register
 operations use 80-bit floating point operands.  (Contrast this with
 'fstl %st, mem', which converts '%st' from 80-bit to 64-bit floating
 point format, then stores the result in the 4 byte location 'mem')