SPARC Assembly Language Reference Manual

Exit Print View

Updated: July 2014
 
 

Using the Assembler Command Line

This appendix is organized into the following sections:

A.1 Assembler Command Line

You invoke the assembler command line as follows:

as [options] [inputfile] ... 

Note - The Oracle Solaris Studio C, C++, and Fortran compilers (cc(1), CC(1), and f95(1)) invoke the assembler with the fbe command. You can use either the as or fbe command on a Oracle Solaris SPARC platform to invoke the SPARC assembler. (Note that the as or fbe command will invoke the x86 assembler on a Solaris x86 platform.)

The as command translates the assembly language source files, inputfile, into an executable object file, objfile. The SPARC assembler recognizes the filename argument hyphen (-) as the standard input. It accepts more than one file name on the command line. The input file is the concatenation of all the specified files. If an invalid option is given or the command line contains a syntax error, the SPARC assembler prints the error (including a synopsis of the command line syntax and options) to standard error output, and then terminates.

The SPARC assembler supports macros, #include files, and symbolic substitution through use of the C preprocessor cpp. The assembler invokes the preprocessor before assembly begins if it has been specified from the command line as an option. (See the -P option.)

A.2 Assembler Command Line Options

-Dname -Dname=def

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

-hwcap={1|0}

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

-Ipath

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

-i

Ignore line number information from the preprocessor.

-L

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

-m

This option runs m4 macro preprocessing on input. The m4 preprocessor is more useful for complex preprocessing than the C preprocessor invoked by the -P option. See the m4(1) man page for more information about the m4 macro-processor.

-m64|-m32

Select the 64–bit (-m64) or 32–bit (-m32) memory model. With –m64, the resulting .o object files are in 64-bit ELF format and can only be linked with other object files in the same format. The resulting executable can only be run on a 64-bit SPARC processor running 64-bit Solaris OS. –m32 is the default.

-n

Suppress all warnings while assembling.

-o outfile

Write the output of the assembler to outfile. By default, if –o is not specified, the output file name is the same as the input file name with .s replaced with .o.

-P

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

-Q{y|n}

This option produces the “assembler version” information in the comment section of the output object file if the y option is specified; 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 turn the switch off for the corresponding option.

-s

This option places all stabs in the ".stabs" section. By default, stabs are placed in "stabs.excl" sections, which are stripped out by the static linker ld during final execution. When the -s option is used, stabs remain in the final executable because ".stab" sections are not stripped out by the static linker ld.

-Uname

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

–ul

By default, undefined symbols are marked as global. With –ul, they are marked as local.

-V

This option writes the version information on the standard error output.

-xarch=isa

isa specifies the target architecture instruction set (ISA). This option limits the instructions accepted by the assembler to the instructions of the specified instruction set architecture. The assembler will issue an error when encountering an instruction that is not part of the specified isa. Use the -m64 or -m32 option to specify the intended memory model, 64-bit or 32-bit respectively. The -xarch flag no longer indicates the memory model.Note: The assembler and linker will mark .o files and executables that require a particular instruction set architecture (ISA) so that the executable will not be loaded at runtime if the running system does not support that particular ISA. If you compile and link in separate steps, make sure to specify the same isa value for -xarch in both steps.

isa value
Meaning
generic
Equivalent to –xarch=sparc
sparc
Limit the instruction set to SPARC V9 without the VIS (Visual Instruction Set) and without other implementation-specific extensions.
sparcvis
Limit the instruction set to SPARC V9 plus the VIS version 1.0 and the UltraSPARC extensions.
sparcvis2
Limit the instruction set to SPARC V9 and the UltraSPARC extensions, plus the VIS version 2.0 and the UltraSPARC III extensions.
sparcvis3
Limit the instruction set to SPARC V9 and the Ultra SPARC extensions, plus the VIS version 3.0 and the UltraSPARC III extensions, plus the fused multiply-add instructions.
sparcfmaf
Limit the instruction set to SPARC V9 and the Ultra SPARC extensions, plus the VIS version 2.0 and the UltraSPARC III extensions, and the SPARC64 VI extensions for floating-point multiply-add.
sparcima
Limit the instruction set to the SPARC IMA version of SPARC V9 and the Ultra SPARC extensions, plus the VIS version 2.0 and the UltraSPARC III extensions, the SPARC64 VI extensions for floating-point multiply-add, and the SPARC64 VII instructions for integer multiply-add.
sparc4
Limit the instruction set to the SPARC4 version of SPARC V9 and the Ultra SPARC extensions, plus the VIS version 3.0 and the UltraSPARC III extensions, the SPARC64 VI extensions for fused floating-point multiply-add, and the SPARC64 VII instructions for integer multiply-add, and SPARC4 instructions.
sparcace
Limit the instruction set to the SPARCACE version of the SPARC-V9 ISA and includes the following instruction sets
  • SPARC-V9

  • UltraSPARC extensions, including the Visual Instruction Set(VIS) version 1.0

  • UltraSPARC-III extensions, including the Visual Instruction Set(VIS) version 2.0

  • SPARC64 VI extensions for floating-point multiply-add

  • SPARC64 VII extensions for integer multiply-add, and SPARCACE instructions

sparcaceplus
Limit the instruction set to the SPARCACEPLUS version of the SPARC-V9 ISA and includes the following instruction sets
  • SPARC-V9

  • UltraSPARC extensions, including the Visual Instruction Set(VIS) version 1.0

  • UltraSPARC-III extensions, including the Visual Instruction Set(VIS) version 2.0

  • SPARC64 VI extensions for floating-point multiply-add

  • SPARC64 VII extensions for integer multiply-add, SPARCACE, and SPARCACEPLUS instructions

v9
Equivalent to –m64 –xarch=sparc.
v9a
Equivalent to –m64 –xarch=sparcvis
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 debugging directives, the assembler will generate default stabs needed by the analyzer. See also the dbx(1) man page.

-Y{c|m},path

Specify the path to locate the version of cpp (-Yc,path) or m4 (-Ym,path) to use.

A.3 Disassembling Object Code

The dis program is the object code disassembler for ELF. It produces an assembly language listing of the object file. For detailed information about this function, see the dis(1) man page.