Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Thursday, March 14, 2019
 
 

as(1)

Name

as - assembler

Synopsis

SPARC
as [ -hwcap={1|0} ] [ -L ] [ -m ] [ -m32 ] [ -m64 ]
     [ -n ] [ -o outfile ] [ -ul ] [ -P ]
     [ -Dname ] [ -Dname=def ] [ -Ipath ]
     [ -Uname....  ] [ -Q[y|n] ] [ -s ]
     [ -S[a|b|c|l|A|B|C|L]] [ -V ] [ -xarch=v ]
     [ -xF ] [ -Y[m|c],path ] [ -YI,path ] filename...

x86
as [ -a32 ] [ -m ] [ -m32 ] [ -m64 ] [ -n ]
     [ -H ] [ -nH ] [ -o outfile ]
     [ -P ] [ -Dname ] [ -Dname=def ] [ -Ipath ]
     [ -remove_empty_sect ]
     [ -Uname....  ]
     [ -KPIC ] [ -Q[y|n] ] [ -s ] [ -S[a|b|c|l|A|B|C|L]] [ -V ]
     [ -xchip=v ] [ -xmodel=[a] ]
     [ -Y[m|d],path ] [ -YI,path ] filename...

Description

The as command creates object files from assembly language source files.

Options

This section is divided into three:

  • Common Options (options common to both SPARC and x86)

  • SPARC Options

  • x86 Options

Common Options

–Dname
–Dname=def

When the –P option is in effect, these options are passed to the cpp(1) preprocessor without interpretation by the as command; otherwise, they are ignored.

–I path

When the –P option is in effect, this option is passed to the cpp(1) preprocessor without interpretation by the as command; otherwise, it is ignored.

–i

Instructs as to ignore line-number information from the preprocessor.

–m

Run the m4(1) macro processor on the input to the assembler.

–m32|–m64

Generate 32-bit or 64-bit ELF format object code.

–n

Suppress all the warnings while assembling.

–o outfile

Put the output of the assembly in outfile. By default, the output file name is formed by removing the .s suffix, if there is one, from the input file name and appending an .o suffix.

–P

Run cpp(1), the C preprocessor, on the files being assembled. The preprocessor is run separately on each input file, not on their con- catenation. The preprocessor output is passed to the assembler.

–Q[y|n]

If the y option is specified, it produces the “assembler version” information in the comment section of the output object file. If the n option is specified, the information is suppressed.

–S[a|b|c|l|A|B|C|L]

Produces a disassembly of the emitted code to the standard output. Adding each of the following characters to the –S option produces:

a

Disassembling with address

b

Disassembling with .bof

c

Disassembling with comments

l

Disassembling with line numbers.

Capital letters switch the corresponding option off. The default is –Sc.

–s

Place all stabs in the .stabs section. By default, stabs are placed in stabs.excl sections, which are stripped out by the static linker, ld(1), during final execution. When the –s option is used, stabs remain in the final executable because .stab sections are not stripped by the static linker.

–Uname

When the –P option is in effect, this option is passed to the cpp(1) preprocessor without interpretation by the as command; otherwise, it is ignored.

–Ym,path

Specify path to the version of m4 to use.

–YI,path

Indicate path to search for #include header files.

SPARC Options

–hwcap={1|0}

Enable (1) or suppress (0) the generation of the Hardware Capabilities section. Default is to generate the section.

–L

Save all symbols, including temporary labels that are normally discarded to save space, in the ELF symbol table.

–ul

Treat all undefined symbols as local.

–Yc,path

Specify path to the version of cpp to use.

–xarch=sparc

Enables the assembler to accept instructions defined in the SPARC-V9 architecture. The resulting object code is in ELF32 format when compiled with –m32, ELF64 format with –m64. It will not execute on a Oracle Solaris V8 system (a machine with a V8 processor). It will execute on a Oracle Solaris V8+ system.

–xarch=sparcvis

Enables the assembler to accept instructions defined in the SPARC-V9 architecture plus the instructions in the Visual Instruction Set (VIS) version 1.0. The resulting object code is in V8+ ELF32 format when compiled with –m32, ELF64 format with –m64. It will not execute on a Oracle Solaris system with a V8 processor. It will execute on a Oracle Solaris system with a V8+ processor.

–xarch=sparcvis2

Enables the assembler to accept instructions defined in the SPARC-V9 architecture, plus the instructions in the Visual Instruction Set (VIS) version 2.0, with UltraSPARC-III extensions. The resulting object code is in V8+ ELF32 format when compiled with –m32, ELF64 format with –m64.

–xarch=sparcvis3

Accept instructions defined for the SPARC VIS version 3 of the SPARC-V9 ISA which are instructions from the SPARC-V9 instruction set, plus the UltraSPARC extensions, including the Visual Instruction Set (VIS) version 1.0, the UltraSPARC-III extensions, including the Visual Instruction Set (VIS) version 2.0, the fused multiply-add instructions, and the Visual Instruction Set (VIS) version 3.0.

–xarch=sparcfmaf

Accept instructions defined for the sparcfmaf version of the SPARC-V9 ISA, plus the UltraSPARC extensions, including the Visual Instruction Set (VIS) version 1.0, the UltraSPARC-III extensions, including the Visual Instruction Set (VIS) version 2.0, and the SPARC64 VI extensions for floating-point multiply-add.

–xarch=sparcima

Accept instructions defined for the sparcima version of the SPARC-V9 ISA which are instructions from the SPARC-V9 instruction set, plus the UltraSPARC extensions, including the Visual Instruction Set (VIS) version 1.0, the UltraSPARC-III extensions, including the Visual Instruction Set (VIS) version 2.0, the SPARC64 VI extensions for floating-point multiply-add, and the SPARC64 VII extensions for integer multiply-add.

–xarch=sparc4

Accept instructions defined for the sparc4 version of the SPARC-V9 ISA, which are instructions from the SPARC-V9 instruction set, plus the extensions, which includes VIS 1.0, the UltraSPARC-III extensions, which includes VIS 2.0, the fused floating-point multiply-add instructions, VIS 3.0, and SPARC4 instructions.

–xarch=sparc4b

Enables the compiler to use instructions from the SPARC-V9 instruction set, plus the UltraSPARC extensions, which includes VIS 1.0, the UltraSPARC-III extensions, which includes VIS2.0, the SPARC64 VI extensions for floating-point multiply-add, the SPARC64 VII extensions for integer multiply-add, and the PAUSE and CBCOND instructions from the SPARC T4 extensions.

–xarch=sparc4c

Enables the compiler to use instructions from the SPARC-V9 instruction set, plus the UltraSPARC extensions, which includes VIS 1.0, the UltraSPARC-III extensions, which includes VIS2.0, the SPARC64 VI extensions for floating-point multiply-add, the SPARC64 VII extensions for integer multiply-add, the VIS3B subset of the VIS 3.0 instructions a subset of the SPARC T3 extensions, called the VIS3B subset of VIS 3.0, and the PAUSE and CBCOND instructions from the SPARC T4 extensions.

–xarch=sparc5

Accept instructions defined for the sparc5 version of the SPARC-V9 ISA which are instructions from the SPARC-V9 instruction set, plus the extensions, which includes VIS 1.0, the UltraSPARC-III extensions, which includes VIS 2.0, the fused floating-point multiply-add instructions, VIS 3.0, SPARC4, and SPARC5 instructions.

–xarch=v9

Equivalent to: –m64 –xarch=sparc

–xarch=v9a

Equivalent to: –m64 –xarch=sparcvis

–xarch=v9b

Equivalent to: –m64 –xarch=sparcvis2

–xF

Generates additional information for use by the Oracle Solaris Studio performance Analyzer. If the input file does not contain any stabs (debugging directives), then the assembler will generate the default stabs needed by the Oracle Solaris Studio analyzer. Also see the dbx(1) Oracle Sun Studio manual page.

x86 Options

–a32

Allow 32-bit addresses in 64-bit mode.

–H

Generate the Hardware Capabilities section. (This is the default.)

–nH

Suppress the generation of the Hardware Capabilities section.

–KPIC

Check for address referencing with absolute relocation and issue warning.

–xchip=v

When there is a choice between several possible encodings, choose the one that is appropriate for the stated chip. In particular, use the appropriate no-op byte sequence to fill code alignment padding, and warn when instructions not defined for the stated chip are used.

The assembler accepts the instruction sets for the following recognized –xchip values:

generic

generic x86 instruction set.

native

this host processor.

core2

Intel Core2 processor.

nehalem

Intel Nehalem processor.

opteron

AMD Opteron processor.

penryn

Intel Penryn processor.

pentium

Intel Pentium architecture.

pentium_pro

Intel Pentium Pro architecture.

pentium3

Intel Pentium 3 style processor.

pentium4

Intel Pentium 4 style processor.

sandybridge

Intel Sandy Bridge processor.

westmere

Intel Westmere processor.

amdfam10

AMD FAM10 processor.

ivybridge

Intel Ivy Bridge processor.

haswell

Intel Haswell processor.

–xmodel=[small | medium | kernel]

For –m64 only, generate R_X86_64_32S relocatable type for data access under kernel. Otherwise, generate R_X86_64_32 under small. SHN_AMD64_LCOMMON and .lbcomm support added under medium. small is the default.

–Yd,path

Specify path to the version of cm4defs to use.

–remove_empty_sect

Causes the following sections to be removed if they are empty: .bss, .bssf, .lbss,.data, .rodata, .ldata, .lrodata, and .picdata.

–xbrace_comment=no

Activates a complete support of GNU-compatible AVX512 syntax:

  • Stops using single braces for multi-line commentaries. You can add multi-linecomments within the /* */ characters

  • Content within single braces pair is treated as an AVX512 construct and is checked for correctness

  • Double braces is accepted as regular AVX512 syntax and reports any syntax errors.

–xbrace_comment=yes

The assembler treats the text within the braces {} as comments. If you want the text within braces to be treated as regular AVX512 instruction, place the text within double braces {{}}.

Environment Variables

Environment
TMPDIR

as normally creates temporary files in the directory /tmp. You may specify another directory by setting the environment variable TMPDIR to your chosen directory. (If TMPDIR is not a valid directory, then as will use /tmp).

Files

By default, as creates its temporary files in /tmp.

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Availability
system/
Interface Stability
Committed

See Also

cpp(1), ld(1), m4(1), nm(1), strip(1), tmpnam(3C), a.out(5), attributes(7)

Notes

On SPARC platforms, the cpp symbol __sparc is set when the flag –P appears, as well as __sparcv8 with the –m32 flag, and __sparcv9 with the –m64 flag.

On x86/x64, the symbol __i386 is set when the flag –P appears, as well as __amd64 with the –m64 flag.

If the –m (invoke the m4(1) macro processor) option is used, keywords for m4 cannot be used as symbols (variables, functions, labels) in the input file since m4 cannot determine which keywords are assembler symbols and which keywords are real m4 macros.

Whenever possible, you should access the assembler through a compilation system interface program such as the Oracle Solaris Studio C compiler, cc, to ensure proper library linking. See the cc(1) Oracle Solaris Studio man page.