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)