as: Align

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