AS(1) General Commands Manual AS(1)NAME
as - assembler
as [ -u ] [ -V ] [ -o objfile ] file ...
As assembles the concatenation of the named files. The options are:
-u Treat all undefined symbols in the assembly as external globals.
-V Produce an object suitable for loading into an automatic text overlaid program.
-o Use objfil for the name of the resultant object. If this is omitted, a.out is used. If no errors occurred during the assembly and
if there were no unresolved external references, it is made executable.
The special file name -- serves two purposes. It signals the end of all options and causes stdin to be read for input. Thus it is now
possible to pipe data to the assembler:
/lib/cpp -E foo.s | sed -e ';^#;/;' | as -o foo.o --
The file name -- may be placed between normal files, when EOF is detected on stdin the next file in the argument list is opened and read.
If no input files are specified then stdin is read.
SEE ALSO adb(1), ld(1), nm(1), a.out(5)
UNIX Assembler Manual by D. M. Ritchie
When an input file cannot be read, its name followed by a question mark is typed and assembly ceases. When syntactic or semantic errors
occur, a single-character diagnostic is typed out together with the line number and the file name in which it occurred. Errors in pass 1
cause cancellation of pass 2. The possible errors are:
) Parentheses error
] Parentheses error
< String not terminated properly
* Indirection used illegally
. Illegal assignment to `.'
a Error in address
b Branch instruction is odd or too remote
e Error in expression
f Error in local (`f' or `b') type symbol
g Garbage (unknown) character
i End of file inside an if
m Multiply defined symbol as label
o Word quantity assembled at odd address
p `.' different in pass 1 and 2
r Relocation error
u Undefined symbol
x Syntax error
Syntax errors can cause incorrect line numbers in following diagnostics.
3rd Berkeley DistributionAS(1)
Check Out this Related Man Page
AS(1) General Commands Manual AS(1)NAME
as - Mac OS X Mach-O GNU-based assemblers
as [ option ... ] [ file ... ]
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 target architecture is
specified, it defaults to the architecture of the host it is running on.
OPTIONS -o name
Name the output file name instead of a.out.
Specifies the target architecture, arch_type, of the assembler to be executed. The target assemblers for each architecture are in
/usr/libexec/gcc/darwin/arch_type/as or /usr/local/libexec/gcc/darwin/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., /usr/libexec/gcc/darwin/ppc/as for -arch ppc604e). See arch(3) for the currently known arch_types.
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.
By default, the assembler will produce the CPU subtype ALL for the object file it is assembling if it finds no implementation-spe-
cific instructions. Also by default, the assembler will allow implementation-specific instructions and will combine the CPU subtype
for those specific implementations. The combining of specific implementations is architecture-dependent; if some combination of
instructions 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 the ALL subtype. 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 supported on that architecture, and it
will produce an object file with the CPU subtype for that specific implementation (even if no implementation-specific instructions
Enables dynamic linking features. This is the default.
Causes the assembler to treat as an error any features for dynamic linking. Also causes the .text directive to not include the
pure_instructions section attribute.
-- 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
". 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 assembled 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
<filename> pairs. When the assembler preprocessor has been turned off by a "#NO_APP
" at the start of a file, it can be turned
back on and off again with pairs of "#APP
" and "#NO_APP
" at the beginnings of lines. This is used by the compiler to wrap
assembly statements produced from asm() statements.
-g Produce debugging information for the symbolic debugger gdb(1) so that the assembly source can be debugged symbolically. The debug-
ger depends on correct use of the C preprocessor's #include directive 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. Oth-
erwise, the debugger 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).
-V Print the path and the command line of the assembler the assembler driver is using.
-Idir Add the directory dir to the list of directories to search for files included with the .include directive. 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 ta-
ble. The compiler generates such temporary labels.
Assembler options for the PowerPC processors-static_branch_prediction_Y_bit
Treat a single trailing '+' or '-' after a conditional PowerPC branch instruction as a static branch prediction that sets the Y-bit
in the opcode. Pairs of trailing "++" or "--" always set the AT-bits. This is the default for Mac OS X.
Treat a single trailing '+' or '-' after a conditional PowerPC branch instruction as a static branch prediction that sets the AT-
bits in the opcode. Pairs of trailing "++" or "--" always set the AT-bits but with this option a warning is issued if this syntax is
used. With this flag the assembler behaves like the IBM tools.
Treat any PowerPC 601 instructions as an error.
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.
Generate branches that use 32-bit pc-relative displacements. This is the default.
a.out output file
The assembler manual on line in /Developer/Documentation/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. May 21, 2003 AS(1)