AS(1) AS(1)
NAME
as - Mac OS X Mach-O GNU-based assemblers
SYNOPSIS
as [ option ... ] [ file ... ]
DESCRIPTION
The as command translates assembly code in the named files
to object code. If no files are specified, as reads from
stdin. All undefined symbols in the assembly are treated
as global. The output of the assembly is left in the file
a.out by default.
The program /usr/bin/as is actually a driver that executes
assemblers for specific target architectures. If no tar-
get architecture is specified, it defaults to the archi-
tecture of the host it is running on.
OPTIONS
-o name
Name the output file name instead of a.out.
-arch arch_type
Specifies the target architecture, arch_type, of
the assembler to be executed. The target assem-
blers for each architecture are in
/lib/arch_type/as or /usr/local/lib/arch_type/as.
There is only one assembler for an architecture
family. If the specified target architecture is a
machine-specific implementation, the assembler for
that architecture family is executed (e.g.,
/lib/ppc/as for -arch ppc604e). See arch(3) for
the currently known arch_types.
-arch_multiple
Precede any displayed messages with a line stating
the program name (as) and the architecture (from
the -arch arch_type flag), to distinguish which
architecture the error messages refer to. When the
cc(1) driver program is run with multiple -arch
flags, it invokes as with the -arch_multiple
option.
-force_cpusubtype_ALL
By default, the assembler will produce the CPU sub-
type ALL for the object file it is assembling if it
finds no implementation-specific instructions.
Also by default, the assembler will allow implemen-
tation-specific instructions and will combine the
CPU subtype for those specific implementations.
The combining of specific implementations is archi-
tecture-dependent; if some combination of architec-
tures is not allowed, an error is generated. With
the optional -force_cpusubtype_ALL flag, all
instructions are allowed and the object file's CPU
subtype will be ALL. If the target architecture
specified is a machine-specific implementation
(e.g., -arch ppc603, -arch i486), the assembler
will flag as errors instructions that are not sup-
ported on that architecture, and it will produce an
object file with the CPU subtype for that specific
implementation (even if no implementation-specific
instructions are used).
-dynamic
Enables dynamic linking features. This is the
default.
-static
Causes the assembler to treat as an error any fea-
tures for dynamic linking.
-- Use stdin for the assembly source input.
-n Instructs the assembler not to assume that the
assembly file starts with a .text directive. Use
this option when an output file is not to contain a
(__TEXT,__text) section or this section is not to
be first one in the output file.
-f Fast; no need for the assembler preprocessor
(``app''). The assembler preprocessor can also be
turned off by starting the assembly file with
"#NO_APP\n". This is intended for use by compilers
which produce assembly code in a strict "clean"
format that specifies exactly where whitespace can
go. The assembler preprocessor needs to be run on
hand-written assembly files and/or files that have
been preprocessed by the C preprocessor cpp. This
is typically needed when assembler files are assem-
bled through the use of the cc(1) command, which
automatically runs the C preprocessor on assembly
source files. The assembler preprocessor strips
out excess spaces, turns single-quoted characters
into a decimal constants, and turns # <number>
<filename> <level> into .line <number>;.file <file-
name> pairs. When the assembler preprocessor has
been turned off by a "#NO_APP\n" at the start of a
file, it can be turned back on and off again with
pairs of "#APP\n" and "#NO_APP\n" at the beginnings
of lines. This is used by the compiler to wrap
assembly statements produced from asm() statements.
-k Produces a warning when the statement ``.word sym-
bol1-symbol2+offset'' does not fit in a 16-bit word
(only applicable on the 68000 processor, where
.word is 16 bits and addresses are 16 bits). Not
applicable on NeXT machines.
-g Produce debugging information for the symbolic
debugger gdb(1) so that the assembly source can be
debugged symbolically. The debugger depends on
correct use of the C preprocessor's #include direc-
tive or the assembler's .include directive: Any
include file that produces instructions in the
(__TEXT,__text) section must be included while a
.text directive is in effect. In other words,
there must be a .text directive before the include,
and the .text directive must still be in effect at
the end of the include file. Otherwise, the debug-
ger will get confused when in that assembly file.
-v Display the version of the assembler (both the Mac
OS X version and the GNU version it is based on).
-Idir Add the directory dir to the list of directories to
search for files included with the .include direc-
tive. The default place to search is the current
directory.
-W Suppress warnings.
-L Save non-global defined labels beginning with an
'L'; these labels are normally discarded to save
space in the resultant symbol table. The compiler
generates such temporary labels.
Assembler options for the mc680x0 processors
-mc68000 and -mc68010
Generate branches that the mc68000 and mc68010 can
use (that don't use 32-bit pc-relative jumps and
branches, since they are not implemented on these
two processors). Not applicable on NeXT machines.
-mc68020
Generate branches that use 32-bit pc-relative dis-
placements. This is the default.
FILES
a.out output file
SEE ALSO
The assembler manual on line in /Developer/Documenta-
tion/DeveloperTools/Assembler
The assembler source in the cctools module of the Darwin
sources.
cc(1), ld(1), nm(1), otool(1), arch(3), Mach-O(5)
Apple Computer, Inc. November 19, 2001 AS(1)