gas .p2align directive?

Mumit Khan khan@xraylith.wisc.edu
Thu Sep 30 23:56:00 GMT 1999


In article < 37E9F21A.CC464CFE@sonoma.edu >,
Robert G. Plantz <plantz@sonoma.edu> wrote:
>When I look at the assembly language, gcc generates several instances
>of
>               .p2align    4,,7
>for me. (Yes, there are two commas.)
>I can delete these directives, assemble and link the result, and it
>seems to run just fine.
>
>What is the purpose of this directive?

Described in the gas manual. Purpose is to provide the correct alignment
per Intel ABI (I believe Intel Architecture Manual has tons of stuff on
this, at least more than I ever wanted to know ;-).

Here's a snippet from the docs:
========
File: as.info,  Node: P2align,  Next: Psize,  Prev: Org,  Up: Pseudo Ops

`.p2align[wl] 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
number of low-order zero bits the location counter must have after
advancement.  For example `.p2align 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.

   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 some
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.

========

Regards,
Mumit



More information about the Gcc-help mailing list