[ Previous |
Next |
Contents |
Home |
Search ]
AIX Version 4.3 Assembler Language Reference
Assembling and Linking a Program
Assembly language programs can be assembled with the as command or the cc command. The ld command or the cc command can be used to link assembled programs. This section discusses the following:
Assembling with the as Command
The as command invokes the assembler. The syntax for the as command is:
as [ -a Mode ] [ -o ObjectFile ] [ -n Name ] [ -u ] [ -l [ ListFile ] ] [ -W | -w ] [ -x [ XCrossFile ] ] [ -s [ ListFile ] ] [ -m ModeName ] [ File ]
The as command reads and assembles the file specified by the File parameter. By convention, this file has a suffix of .s. If no file is specified, the as command reads and assembles standard input. By default, the as command stores its output in a file named a.out. The output is stored in the XCOFF file format.
All flags for the as command are optional.
The ld command is used to link object files. See the ld command for more information.
The assembler respects the setting of the OBJECT_MODE
environment variable. If neither -a32 or -a64 is used,
the environment is examined for this variable. If the value of the
variable is anything other than the values listed in the following
table, an error message is generated and the assembler exits with
a non-zero return code.
The implied behavior corresponding to the valid settings
are as follows:
OBJECT_MODE=32
|
Produce 32-bit object code. The default machine setting
is com.
|
OBJECT_MODE=64
|
Produce 64-bit object code (XCOFF64 files). The default machine
setting is ppc64.
|
OBJECT_MODE=32_64
|
Invalid.
|
OBJECT_MODE=anything else
|
Invalid.
|
as Command Flags
The following flags are recognized by the as command:
-a Mode
|
Specifies the mode in which the as command operates.
By default, the as command operates in 32-bit mode,
but the mode can be explicitly set by using the flag
-a32 for 32-bit mode operation or -a64 for
64-bit mode operation.
|
-o ObjectFile
|
Writes the output of the assembly process to the specified
file instead of to the a.out file.
|
-n Name
|
Specifies the name that appears in the header of the
assembler listing. By default, the header contains the name
of the assembler source file.
|
-l[ListFile]
|
Produces an assembler listing. If you do not specify a file
name, a default name is produced by replacing the suffix
extension of the source file name with a .lst extension.
(By convention, the source file suffix is a .s.) For
example:
sourcefile.xyz
produces a default name of:
sourcefile.lst
If the source code is from
standard input and the -l flag is used without
specifying an assembler-listing file name, the listing
file name is a.lst.
|
-s[ListFile]
|
Indicates whether or not a mnemonics cross-reference for
POWER and PowerPC is included in the assembler
listing. If this flag is omitted, no mnemonics cross-reference
is produced. If this flag is used, the assembler listing will
have POWER mnemonics if the source contains
PowerPC mnemonics, and will have PowerPC
mnemonics if the source contains POWER mnemonics.
The mnemonics cross-reference is
restricted to instructions that have different mnemonics
in POWER and PowerPC, but that have the
same op code, function, and input operand format.
Because the -s flag is
used to change the assembler-listing format, it implies
the -l flag. If both option flags are used and different
assembler-listing file names (specified by the ListFile
variable) are given, the listing file name specified by the
ListFile variable used with the -l flag is used.
If an assembler-listing file name is not specified with either
the -l or -s flag, a default assembler listing
file name is produced by replacing the suffix extension of the
source file name with a .lst extension.
|
-u
|
Accepts an undefined symbol as an extern so that an error
message is not displayed. Otherwise, undefined symbols are
flagged with error messages.
|
-W
|
Turns off all warning message reporting, including the
instructional warning messages (the POWER and
PowerPC incompatibility warnings).
|
-w
|
Turns on warning message reporting, including reporting of
instructional warning messages (the POWER and
PowerPC incompatibility warnings).
|
Note: When
neither -W nor -w is specified, the
instructional warnings are reported, but other warnings
are suppressed.
|
-x[XCrossFile]
|
Produces cross-reference output. If you do not specify a
file name, a default name is produced by replacing the
suffix extension of the source file name with an .xref
extension. By convention, the suffix is a .s. For
example:
sourcefile.xyz
produces a default name of:
sourcefile.xref
Note: The
assembler does not generate an object file when the
-x flag is used.
|
-m ModeName
|
Indicates the assembly mode. This flag has lower priority
than the .machine pseudo-op.
If this flag is not used
and no .machine pseudo-op is present in the source
program, the default assembly mode is used. The default
assembly mode has the POWER/PowerPC
intersection as the target environment, but treats all
POWER/PowerPC incompatibility errors
(including instructions outside the POWER/PowerPC
intersection and invalid form errors) as instructional
warnings.
If an assembly mode that
is not valid is specified and no .machine pseudo-op
is present in the source program, an error is reported and
the default assembly mode is used for instruction validation
in pass 1 of the assembler.
If the -m flag is used,
the ModeName variable can specify one of the
following values:
""
|
Explicitly specifies the default assembly mode which
has the POWER/PowerPC intersection
as the target environment, but treats instructions
outside the POWER/PowerPC
intersection and invalid form errors as instructional
warnings. A space is required between -m and
the null string argument (two double quotation marks).
|
com
|
Specifies the POWER/PowerPC
intersection mode. A source program can contain only
instructions that are common to both POWER
and PowerPC; any other instruction causes an
error. Any instruction with an invalid form causes
errors, terminates the assembly process, and results
in no object code being generated.
Note:
Certain POWER instructions are
supported by the PowerPC 601 RISC Microprocessor, but do not
conform to the PowerPC architecture.
These instructions cause errors when using the
com assembly mode.
|
ppc
|
Specifies the PowerPC mode. A source
program can contain only PowerPC
instructions. Any other instruction causes an error.
Notes:
- The PowerPC
optional instructions are not implemented in every
PowerPC processor and do not belong to the
ppc mode. These instructions generate an error
if they appear in a source program which is assembled
using the ppc assembly mode.
- Certain instructions
conform to the PowerPC architecture, but are
not supported by the PowerPC 601 RISC Microprocessor.
|
ppc64
|
Specifies the PowerPC 64-bit mode. A source
program can contain 64-bit PowerPC instructions.
|
any
|
Specifies the indiscriminate mode. The assembler
generates object code for any recognized instruction,
regardless of architecture. This mode is used
primarily for operating system development and for
testing and debugging purposes.
Note:
All POWER/PowerPC incompatibility
errors are ignored when using the any assembly
mode, and no warnings are generated.
|
pwr
|
Specifies the POWER mode. A source program
can contain only instructions for the POWER
implementation of the POWER architecture.
|
pwr2(pwrx)
|
Specifies the POWER2 mode. A source program
can contain only instructions for the POWER2
implementation of the POWER architecture.
pwr2 is the preferred value. The alternate
assembly mode value pwrx means the same thing
as pwr2.
Note:
The POWER implementation instruction
set is a subset of the POWER2 implementation
instruction set.
|
601
|
Specifies the PowerPC 601 RISC Microprocessor mode. A source
program can contain only instructions for the
PowerPC 601 RISC Microprocessor.
Note:
The PowerPC 601 RISC Microprocessor design was completed before
the PowerPC architecture. Therefore, some
PowerPC instructions may not be supported by
the PowerPC 601 RISC Microprocessor.
Attention:
It is recommended that the 601 assembly mode
not be used for applications that are intended to be
portable to future PowerPC systems. The
com or ppc assembly mode should be used
for such applications.
The PowerPC 601 RISC Microprocessor
implements the PowerPC architecture plus some
POWER instructions which are not included in
the PowerPC architecture. This allows existing
POWER applications to run with acceptable
performance on PowerPC systems. Future
PowerPC systems will not have this feature.
The 601 assembly mode may result in applications
that will not run on existing POWER systems and
that may not have acceptable performance on future
PowerPC systems, because the 601
assembly mode permits the use of all the instructions
provided by the PowerPC 601 RISC Microprocessor.
|
603
|
Specifies the PowerPC 603 RISC Microprocessor mode. A source program
can contain only instructions for the
PowerPC 603 RISC Microprocessor.
|
604
|
Specifies the PowerPC 604 RISC Microprocessor mode. A source program
can contain only instructions for the PowerPC 604 RISC Microprocessor.
|
A35
|
Specifies the A35 mode. A source program can
contain only instructions for the A35.
|
|
File |
Specifies the source file. If no file is specified, the source code is taken from standard input. |
Assembling and Linking with the cc Command
The cc command can be used to assemble and link an assembly source program. The following example links object files compiled or assembled with the cc command:
cc pgm.o subs1.o subs2.o
When the cc command is used to link object files, the object files should have the suffix of .o as in the previous example.
When the cc command is used to assemble and link source files, any assembler source files must have the suffix of .s. The cc command invokes the assembler for any files having this suffix. Option flags for the as command can be directed to the assembler through the cc command. The syntax is:
-Wa,Option1,Option2,...
The following example invokes the assembler to assemble the source program using the com assembly mode, and produces an assembler listing and an object file:
cc -c -Wa,-mcom,-l file.s
The cc command invokes the assembler and then continues processing normally. Therefore:
cc -Wa,-l,-oXfile.o file.s
will fail because the object file produced by the assembler is named Xfile.o
, but the linkage editor (ld command) invoked by the cc command searches for file.o
.
If no option flag is specified on the command line, the cc command uses the compiler, assembler, and link options, as well as the necessary support libraries defined in the xlc.cfg configuration file.
Note: Some option flags defined in the assembler and the linkage editor use the same letters. Therefore, if the xlc.cfg configuration file is used to define the assembler options (asopt) and the link-editor options (ldopt), duplicate letters should not occur in asopt and ldopt because the cc command is unable to distinguish the duplicate letters.
For more information on the option flags passed to the cc command, see the cc command.
Related Information
Understanding Assembler Passes.
Interpreting an Assembler Listing.
Interpreting a Symbol Cross-Reference.
Subroutine Linkage Convention.
Understanding and Programming the TOC.
Running a Program.
The as command, cc command, ld command.
[ Previous |
Next |
Contents |
Home |
Search ]