9.15.1 i960 Command-line Options
-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC
- Select the 80960 architecture. Instructions or features not supported
by the selected architecture cause fatal errors.
-ACA is equivalent to -ACA_A; -AKC is equivalent to -AMC. Synonyms are provided for compatibility with other tools.
If you do not specify any of these options,
asgenerates code for any instruction or feature that is supported by some version of the 960 (even if this means mixing architectures!). In principle,
asattempts to deduce the minimal sufficient processor type if none is specified; depending on the object code format, the processor type may be recorded in the object file. If it is critical that the
asoutput match a specific architecture, specify that architecture explicitly.
- Add code to collect information about conditional branches taken, for
later optimization using branch prediction bits. (The conditional branch
instructions have branch prediction bits in the CA, CB, and CC
architectures.) If BR represents a conditional branch instruction,
the following represents the code generated by the assembler when
-b is specified:
call increment routine .word 0 # pre-counter Label: BR call increment routine .word 0 # post-counter
The counter following a branch records the number of times that branch was not taken; the difference between the two counters is the number of times the branch was taken.
A table of every such
Labelis also generated, so that the external postprocessor
gbr960(supplied by Intel) can locate all the counters. This table is always labeled __BRANCH_TABLE__; this is a local symbol to permit collecting statistics for many separate object files. The table is word aligned, and begins with a two-word header. The first word, initialized to 0, is used in maintaining linked lists of branch tables. The second word is a count of the number of entries in the table, which follow immediately: each is a word, pointing to one of the labels illustrated above.
The first word of the header is used to locate multiple branch tables, since each object file may contain one. Normally the links are maintained with a call to an initialization routine, placed at the beginning of each function in the file. The gnu C compiler generates these calls automatically when you give it a -b option. For further details, see the documentation of gbr960.
- Normally, Compare-and-Branch instructions with targets that require
displacements greater than 13 bits (or that have external targets) are
replaced with the corresponding compare (or chkbit) and branch
instructions. You can use the -no-relax option to specify that
asshould generate errors instead, if the target displacement is larger than 13 bits.
This option does not affect the Compare-and-Jump instructions; the code emitted for them is always adjusted when necessary (depending on displacement size), regardless of whether you use -no-relax.