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 (see 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 (see 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=architecturespecifies 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 (see 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.