as: CRIS-Opts
9.8.1 Command-line Options
--------------------------
The CRIS version of 'as' has these machine-dependent command-line
options.
The format of the generated object files can be either ELF or a.out,
specified by the command-line options '--emulation=crisaout' and
'--emulation=criself'. The default is ELF (criself), unless 'as' has
been configured specifically for a.out by using the configuration name
'cris-axis-aout'.
There are two different link-incompatible ELF object file variants
for CRIS, for use in environments where symbols are expected to be
prefixed by a leading '_' character and for environments without such a
symbol prefix. The variant used for GNU/Linux port has no symbol
prefix. Which variant to produce is specified by either of the options
'--underscore' and '--no-underscore'. The default is '--underscore'.
Since symbols in CRIS a.out objects are expected to have a '_' prefix,
specifying '--no-underscore' when generating a.out objects is an error.
Besides the object format difference, the effect of this option is to
parse register names differently (crisnous). The
'--no-underscore' option makes a '$' register prefix mandatory.
The option '--pic' must be passed to 'as' in order to recognize the
symbol syntax used for ELF (SVR4 PIC) position-independent-code (
crispic). This will also affect expansion of instructions. The
expansion with '--pic' will use PC-relative rather than (slightly
faster) absolute addresses in those expansions. This option is only
valid when generating ELF format object files.
The option '--march=ARCHITECTURE' specifies the recognized
instruction set and recognized register names. It also controls the
architecture type of the object file. Valid values for ARCHITECTURE
are:
'v0_v10'
All instructions and register names for any architecture variant in
the set v0...v10 are recognized. This is the default if the target
is configured as cris-*.
'v10'
Only instructions and register names for CRIS v10 (as found in
ETRAX 100 LX) are recognized. This is the default if the target is
configured as crisv10-*.
'v32'
Only instructions and register names for CRIS v32 (code name
Guinness) are recognized. This is the default if the target is
configured as crisv32-*. This value implies '--no-mul-bug-abort'.
(A subsequent '--mul-bug-abort' will turn it back on.)
'common_v10_v32'
Only instructions with register names and addressing modes with
opcodes common to the v10 and v32 are recognized.
When '-N' is specified, 'as' will emit a warning when a 16-bit branch
instruction is expanded into a 32-bit multiple-instruction construct
(CRIS-Expand).
Some versions of the CRIS v10, for example in the Etrax 100 LX,
contain a bug that causes destabilizing memory accesses when a multiply
instruction is executed with certain values in the first operand just
before a cache-miss. When the '--mul-bug-abort' command-line option is
active (the default value), 'as' will refuse to assemble a file
containing a multiply instruction at a dangerous offset, one that could
be the last on a cache-line, or is in a section with insufficient
alignment. This placement checking does not catch any case where the
multiply instruction is dangerously placed because it is located in a
delay-slot. The '--mul-bug-abort' command-line option turns off the
checking.