2.6. as, the GNU Assembler
as, the GNU assembler, translates text-based
assembly language
source files into binary-based object files.
Normally it operates without you being aware of it,
as the compiler driver program (gcc) invokes it
automatically.
However, if you are creating your own assembler source files,
you must invoke as directly.
If, while using gcc, you want to pass special
command-line options to the assembler to control
its behavior, you need to use the
`-Wa,<text>' command-line option.
This option passes <text> directly
to the assembler's command line.
For example:
gcc -c -g -O -Wa,-alh,-L file.c |
passes the -alh command line option on to the assembler.
(This causes the assembler to emit a listing file that shows the
assembler source generated by the compiler for each line of the
C source file file.c).
For more information, refer to Using as, the Gnu Assembler.
2.6.1. Object Files
The assembler creates object files that, by convention,
have the .o extension.
These are binary files that contain the assembled source code,
information to help the linker integrate the object file into
an executable program, debugging information and tables of all
of the symbols used in the source code.
Special programs exist to manipulate object files.
For example, objdump can disassemble an object file
back into assembler source code and ar
can group together multiple object files into an archive
or library file.
2.6.2. Assembler Directives
Assembler directives are commands inside the assembler source files
that control how the object file is generated.
They are also known as pseudo-ops, or pseudo-operations, because
they can look like commands in the assembler programming language.
Assembler directives always start with a period (.).
The rest of their name is letters, usually in lower case.
They have a wide range of different uses, such as specifying alignments,
inserting constants into the output, and selecting in which sections
of the output file the assembled machine instructions are placed.