[next] [prev] [prev-tail] [tail] [up]

#### 1.2.9 $CODEALIGN : Set the code alignment

This switch sets the code alignment. It takes an argument which is the alignment in bytes.

{$CODEALIGN 8}

There are some more arguments which can be specified, to tune the behaviour even more. The general form is

{$CODEALIGN PARAM=VALUE}

Where PARAM is the parameter to tune, and VAR value is a numerical value specifying an alignment. PARAM can be one of the following strings:

PROC
  Set the alignment for procedure entry points.
JUMP
  Set the alignment for jump destination locations.
LOOP
  Set alignment for loops (for, while, repeat).
CONSTMIN
  Minimum alignment for constants (both typed and untyped).
CONSTMAX
  Maximum alignment for constants (both typed and untyped).
VARMIN
  Minimum alignment for static and global variables.
VARMAX
  Maximum alignment for static and global variables.
LOCALMIN
  Minimum alignment for local variables.
LOCALMAX
  Maximum alignment for local variables.
RECORDMIN
  Minimum alignment for record fields.
RECORDMAX
  Maximum alignment for record fields.

By default the size of a data structure determines the alignment:

- A SmallInt will be aligned at 2 bytes.
- A LongInt will be aligned at 4 bytes.
- A Int64 will be aligned at 8 bytes.

With the above switches the minimum required alignment and a maximum used alignment can be specified. The maximum allowed alignment is only meaningful if it is smaller than the natural size. i.e. setting the maximum alignment (e.g. VARMAX) to 4, the alignment is forced to be at most 4 bytes: The Int64 will then also be aligned at 4 bytes. The SmallInt will still be aligned at 2 bytes.

These values can also be specified on the command line as

-OaPARAM=VALUE

[next] [prev] [prev-tail] [front] [up]