6.3.1. `win32' Extensions to the `SECTION' Directive
----------------------------------------------------
Like the `obj' format, `win32' allows you to specify additional
information on the `SECTION' directive line, to control the type and
properties of sections you declare. Section types and properties are
generated automatically by NASM for the standard section names `.text',
`.data' and `.bss', but may still be overridden by these qualifiers.
The available qualifiers are:
* `code', or equivalently `text', defines the section to be a code
section. This marks the section as readable and executable, but not
writable, and also indicates to the linker that the type of the
section is code.
* `data' and `bss' define the section to be a data section,
analogously to `code'. Data sections are marked as readable and
writable, but not executable. `data' declares an initialised data
section, whereas `bss' declares an uninitialised data section.
* `rdata' declares an initialised data section that is readable but
not writable. Microsoft compilers use this section to place
constants in it.
* `info' defines the section to be an informational section, which is
not included in the executable file by the linker, but may (for
example) pass information _to_ the linker. For example, declaring
an `info'-type section called `.drectve' causes the linker to
interpret the contents of the section as command-line options.
* `align=', used with a trailing number as in `obj', gives the
alignment requirements of the section. The maximum you may specify
is 64: the Win32 object file format contains no means to request a
greater section alignment than this. If alignment is not
explicitly specified, the defaults are 16-byte alignment for code
sections, 8-byte alignment for rdata sections and 4-byte alignment
for data (and BSS) sections. Informational sections get a default
alignment of 1 byte (no alignment), though the value does not
matter.
The defaults assumed by NASM if you do not specify the above
qualifiers are:
section .text code align=16
section .data data align=4
section .rdata rdata align=8
section .bss bss align=4
Any other section name is treated by default like `.text'.