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)