as: Align

 
 7.3 '.align ABS-EXPR, ABS-EXPR, ABS-EXPR'
 =========================================
 
 Pad the location counter (in the current subsection) to a particular
 storage boundary.  The first expression (which must be absolute) is the
 alignment required, as described below.
 
    The second expression (also absolute) gives the fill value to be
 stored in the padding bytes.  It (and the comma) may be omitted.  If it
 is omitted, the padding bytes are normally zero.  However, on most
 systems, if the section is marked as containing code and the fill value
 is omitted, the space is filled with no-op instructions.
 
    The third expression is also absolute, and is also optional.  If it
 is present, it is the maximum number of bytes that should be skipped by
 this alignment directive.  If doing the alignment would require skipping
 more bytes than the specified maximum, then the alignment is not done at
 all.  You can omit the fill value (the second argument) entirely by
 simply using two commas after the required alignment; this can be useful
 if you want the alignment to be filled with no-op instructions when
 appropriate.
 
    The way the required alignment is specified varies from system to
 system.  For the arc, hppa, i386 using ELF, iq2000, m68k, or1k, s390,
 sparc, tic4x, tic80 and xtensa, the first expression is the alignment
 request in bytes.  For example '.align 8' advances the location counter
 until it is a multiple of 8.  If the location counter is already a
 multiple of 8, no change is needed.  For the tic54x, the first
 expression is the alignment request in words.
 
    For other systems, including ppc, i386 using a.out format, arm and
 strongarm, it is the number of low-order zero bits the location counter
 must have after advancement.  For example '.align 3' advances the
 location counter until it a multiple of 8.  If the location counter is
 already a multiple of 8, no change is needed.
 
    This inconsistency is due to the different behaviors of the various
 native assemblers for these systems which GAS must emulate.  GAS also
 provides '.balign' and '.p2align' directives, described later, which
 have a consistent behavior across all architectures (but are specific to
 GAS).