blob: 3fdb652f229505b7f90a685acbbbed23df9a0fe5 [file] [log] [blame]
This is as.info, produced by makeinfo version 5.2 from as.texinfo.
This file documents the GNU Assembler "as".
Copyright (C) 1991-2014 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License".
INFO-DIR-SECTION Software development
START-INFO-DIR-ENTRY
* As: (as). The GNU assembler.
* Gas: (as). The GNU assembler.
END-INFO-DIR-ENTRY

File: as.info, Node: s390 Syntax, Next: s390 Directives, Prev: s390 Characters, Up: S/390-Dependent
9.38.3 Instruction syntax
-------------------------
The assembler syntax closely follows the syntax outlined in Enterprise
Systems Architecture/390 Principles of Operation (SA22-7201) and the
z/Architecture Principles of Operation (SA22-7832).
Each instruction has two major parts, the instruction mnemonic and
the instruction operands. The instruction format varies.
* Menu:
* s390 Register:: Register Naming
* s390 Mnemonics:: Instruction Mnemonics
* s390 Operands:: Instruction Operands
* s390 Formats:: Instruction Formats
* s390 Aliases:: Instruction Aliases
* s390 Operand Modifier:: Instruction Operand Modifier
* s390 Instruction Marker:: Instruction Marker
* s390 Literal Pool Entries:: Literal Pool Entries

File: as.info, Node: s390 Register, Next: s390 Mnemonics, Up: s390 Syntax
9.38.3.1 Register naming
........................
The 'as' recognizes a number of predefined symbols for the various
processor registers. A register specification in one of the instruction
formats is an unsigned integer between 0 and 15. The specific
instruction and the position of the register in the instruction format
denotes the type of the register. The register symbols are prefixed
with '%':
%rN the 16 general purpose registers, 0 <= N <= 15
%fN the 16 floating point registers, 0 <= N <= 15
%aN the 16 access registers, 0 <= N <= 15
%cN the 16 control registers, 0 <= N <= 15
%lit an alias for the general purpose register %r13
%sp an alias for the general purpose register %r15

File: as.info, Node: s390 Mnemonics, Next: s390 Operands, Prev: s390 Register, Up: s390 Syntax
9.38.3.2 Instruction Mnemonics
..............................
All instructions documented in the Principles of Operation are supported
with the mnemonic and order of operands as described. The instruction
mnemonic identifies the instruction format (*note s390 Formats::) and
the specific operation code for the instruction. For example, the 'lr'
mnemonic denotes the instruction format 'RR' with the operation code
'0x18'.
The definition of the various mnemonics follows a scheme, where the
first character usually hint at the type of the instruction:
a add instruction, for example 'al' for add logical 32-bit
b branch instruction, for example 'bc' for branch on condition
c compare or convert instruction, for example 'cr' for compare
register 32-bit
d divide instruction, for example 'dlr' devide logical register
64-bit to 32-bit
i insert instruction, for example 'ic' insert character
l load instruction, for example 'ltr' load and test register
mv move instruction, for example 'mvc' move character
m multiply instruction, for example 'mh' multiply halfword
n and instruction, for example 'ni' and immediate
o or instruction, for example 'oc' or character
sla, sll shift left single instruction
sra, srl shift right single instruction
st store instruction, for example 'stm' store multiple
s subtract instruction, for example 'slr' subtract
logical 32-bit
t test or translate instruction, of example 'tm' test under mask
x exclusive or instruction, for example 'xc' exclusive or
character
Certain characters at the end of the mnemonic may describe a property
of the instruction:
c the instruction uses a 8-bit character operand
f the instruction extends a 32-bit operand to 64 bit
g the operands are treated as 64-bit values
h the operand uses a 16-bit halfword operand
i the instruction uses an immediate operand
l the instruction uses unsigned, logical operands
m the instruction uses a mask or operates on multiple values
r if r is the last character, the instruction operates on registers
y the instruction uses 20-bit displacements
There are many exceptions to the scheme outlined in the above lists,
in particular for the priviledged instructions. For non-priviledged
instruction it works quite well, for example the instruction 'clgfr' c:
compare instruction, l: unsigned operands, g: 64-bit operands, f: 32- to
64-bit extension, r: register operands. The instruction compares an
64-bit value in a register with the zero extended 32-bit value from a
second register. For a complete list of all mnemonics see appendix B in
the Principles of Operation.

File: as.info, Node: s390 Operands, Next: s390 Formats, Prev: s390 Mnemonics, Up: s390 Syntax
9.38.3.3 Instruction Operands
.............................
Instruction operands can be grouped into three classes, operands located
in registers, immediate operands, and operands in storage.
A register operand can be located in general, floating-point, access,
or control register. The register is identified by a four-bit field.
The field containing the register operand is called the R field.
Immediate operands are contained within the instruction and can have
8, 16 or 32 bits. The field containing the immediate operand is called
the I field. Dependent on the instruction the I field is either signed
or unsigned.
A storage operand consists of an address and a length. The address
of a storage operands can be specified in any of these ways:
* The content of a single general R
* The sum of the content of a general register called the base
register B plus the content of a displacement field D
* The sum of the contents of two general registers called the index
register X and the base register B plus the content of a
displacement field
* The sum of the current instruction address and a 32-bit signed
immediate field multiplied by two.
The length of a storage operand can be:
* Implied by the instruction
* Specified by a bitmask
* Specified by a four-bit or eight-bit length field L
* Specified by the content of a general register
The notation for storage operand addresses formed from multiple
fields is as follows:
'Dn(Bn)'
the address for operand number n is formed from the content of
general register Bn called the base register and the displacement
field Dn.
'Dn(Xn,Bn)'
the address for operand number n is formed from the content of
general register Xn called the index register, general register Bn
called the base register and the displacement field Dn.
'Dn(Ln,Bn)'
the address for operand number n is formed from the content of
general regiser Bn called the base register and the displacement
field Dn. The length of the operand n is specified by the field
Ln.
The base registers Bn and the index registers Xn of a storage operand
can be skipped. If Bn and Xn are skipped, a zero will be stored to the
operand field. The notation changes as follows:
full notation short notation
----------------------------------------------
Dn(0,Bn) Dn(Bn)
Dn(0,0) Dn
Dn(0) Dn
Dn(Ln,0) Dn(Ln)

File: as.info, Node: s390 Formats, Next: s390 Aliases, Prev: s390 Operands, Up: s390 Syntax
9.38.3.4 Instruction Formats
............................
The Principles of Operation manuals lists 26 instruction formats where
some of the formats have multiple variants. For the '.insn' pseudo
directive the assembler recognizes some of the formats. Typically, the
most general variant of the instruction format is used by the '.insn'
directive.
The following table lists the abbreviations used in the table of
instruction formats:
OpCode / OpCd Part of the op code.
Bx Base register number for operand x.
Dx Displacement for operand x.
DLx Displacement lower 12 bits for operand x.
DHx Displacement higher 8-bits for operand x.
Rx Register number for operand x.
Xx Index register number for operand x.
Ix Signed immediate for operand x.
Ux Unsigned immediate for operand x.
An instruction is two, four, or six bytes in length and must be
aligned on a 2 byte boundary. The first two bits of the instruction
specify the length of the instruction, 00 indicates a two byte
instruction, 01 and 10 indicates a four byte instruction, and 11
indicates a six byte instruction.
The following table lists the s390 instruction formats that are
available with the '.insn' pseudo directive:
'E format'
+-------------+
| OpCode |
+-------------+
0 15
'RI format: <insn> R1,I2'
+--------+----+----+------------------+
| OpCode | R1 |OpCd| I2 |
+--------+----+----+------------------+
0 8 12 16 31
'RIE format: <insn> R1,R3,I2'
+--------+----+----+------------------+--------+--------+
| OpCode | R1 | R3 | I2 |////////| OpCode |
+--------+----+----+------------------+--------+--------+
0 8 12 16 32 40 47
'RIL format: <insn> R1,I2'
+--------+----+----+------------------------------------+
| OpCode | R1 |OpCd| I2 |
+--------+----+----+------------------------------------+
0 8 12 16 47
'RILU format: <insn> R1,U2'
+--------+----+----+------------------------------------+
| OpCode | R1 |OpCd| U2 |
+--------+----+----+------------------------------------+
0 8 12 16 47
'RIS format: <insn> R1,I2,M3,D4(B4)'
+--------+----+----+----+-------------+--------+--------+
| OpCode | R1 | M3 | B4 | D4 | I2 | Opcode |
+--------+----+----+----+-------------+--------+--------+
0 8 12 16 20 32 36 47
'RR format: <insn> R1,R2'
+--------+----+----+
| OpCode | R1 | R2 |
+--------+----+----+
0 8 12 15
'RRE format: <insn> R1,R2'
+------------------+--------+----+----+
| OpCode |////////| R1 | R2 |
+------------------+--------+----+----+
0 16 24 28 31
'RRF format: <insn> R1,R2,R3,M4'
+------------------+----+----+----+----+
| OpCode | R3 | M4 | R1 | R2 |
+------------------+----+----+----+----+
0 16 20 24 28 31
'RRS format: <insn> R1,R2,M3,D4(B4)'
+--------+----+----+----+-------------+----+----+--------+
| OpCode | R1 | R3 | B4 | D4 | M3 |////| OpCode |
+--------+----+----+----+-------------+----+----+--------+
0 8 12 16 20 32 36 40 47
'RS format: <insn> R1,R3,D2(B2)'
+--------+----+----+----+-------------+
| OpCode | R1 | R3 | B2 | D2 |
+--------+----+----+----+-------------+
0 8 12 16 20 31
'RSE format: <insn> R1,R3,D2(B2)'
+--------+----+----+----+-------------+--------+--------+
| OpCode | R1 | R3 | B2 | D2 |////////| OpCode |
+--------+----+----+----+-------------+--------+--------+
0 8 12 16 20 32 40 47
'RSI format: <insn> R1,R3,I2'
+--------+----+----+------------------------------------+
| OpCode | R1 | R3 | I2 |
+--------+----+----+------------------------------------+
0 8 12 16 47
'RSY format: <insn> R1,R3,D2(B2)'
+--------+----+----+----+-------------+--------+--------+
| OpCode | R1 | R3 | B2 | DL2 | DH2 | OpCode |
+--------+----+----+----+-------------+--------+--------+
0 8 12 16 20 32 40 47
'RX format: <insn> R1,D2(X2,B2)'
+--------+----+----+----+-------------+
| OpCode | R1 | X2 | B2 | D2 |
+--------+----+----+----+-------------+
0 8 12 16 20 31
'RXE format: <insn> R1,D2(X2,B2)'
+--------+----+----+----+-------------+--------+--------+
| OpCode | R1 | X2 | B2 | D2 |////////| OpCode |
+--------+----+----+----+-------------+--------+--------+
0 8 12 16 20 32 40 47
'RXF format: <insn> R1,R3,D2(X2,B2)'
+--------+----+----+----+-------------+----+---+--------+
| OpCode | R3 | X2 | B2 | D2 | R1 |///| OpCode |
+--------+----+----+----+-------------+----+---+--------+
0 8 12 16 20 32 36 40 47
'RXY format: <insn> R1,D2(X2,B2)'
+--------+----+----+----+-------------+--------+--------+
| OpCode | R1 | X2 | B2 | DL2 | DH2 | OpCode |
+--------+----+----+----+-------------+--------+--------+
0 8 12 16 20 32 36 40 47
'S format: <insn> D2(B2)'
+------------------+----+-------------+
| OpCode | B2 | D2 |
+------------------+----+-------------+
0 16 20 31
'SI format: <insn> D1(B1),I2'
+--------+---------+----+-------------+
| OpCode | I2 | B1 | D1 |
+--------+---------+----+-------------+
0 8 16 20 31
'SIY format: <insn> D1(B1),U2'
+--------+---------+----+-------------+--------+--------+
| OpCode | I2 | B1 | DL1 | DH1 | OpCode |
+--------+---------+----+-------------+--------+--------+
0 8 16 20 32 36 40 47
'SIL format: <insn> D1(B1),I2'
+------------------+----+-------------+-----------------+
| OpCode | B1 | D1 | I2 |
+------------------+----+-------------+-----------------+
0 16 20 32 47
'SS format: <insn> D1(R1,B1),D2(B3),R3'
+--------+----+----+----+-------------+----+------------+
| OpCode | R1 | R3 | B1 | D1 | B2 | D2 |
+--------+----+----+----+-------------+----+------------+
0 8 12 16 20 32 36 47
'SSE format: <insn> D1(B1),D2(B2)'
+------------------+----+-------------+----+------------+
| OpCode | B1 | D1 | B2 | D2 |
+------------------+----+-------------+----+------------+
0 8 12 16 20 32 36 47
'SSF format: <insn> D1(B1),D2(B2),R3'
+--------+----+----+----+-------------+----+------------+
| OpCode | R3 |OpCd| B1 | D1 | B2 | D2 |
+--------+----+----+----+-------------+----+------------+
0 8 12 16 20 32 36 47
For the complete list of all instruction format variants see the
Principles of Operation manuals.

File: as.info, Node: s390 Aliases, Next: s390 Operand Modifier, Prev: s390 Formats, Up: s390 Syntax
9.38.3.5 Instruction Aliases
............................
A specific bit pattern can have multiple mnemonics, for example the bit
pattern '0xa7000000' has the mnemonics 'tmh' and 'tmlh'. In addition,
there are a number of mnemonics recognized by 'as' that are not present
in the Principles of Operation. These are the short forms of the branch
instructions, where the condition code mask operand is encoded in the
mnemonic. This is relevant for the branch instructions, the compare and
branch instructions, and the compare and trap instructions.
For the branch instructions there are 20 condition code strings that
can be used as part of the mnemonic in place of a mask operand in the
instruction format:
instruction short form
----------------------------------------------
bcr M1,R2 b<m>r R2
bc M1,D2(X2,B2) b<m> D2(X2,B2)
brc M1,I2 j<m> I2
brcl M1,I2 jg<m> I2
In the mnemonic for a branch instruction the condition code string
<m> can be any of the following:
o jump on overflow / if ones
h jump on A high
p jump on plus
nle jump on not low or equal
l jump on A low
m jump on minus
nhe jump on not high or equal
lh jump on low or high
ne jump on A not equal B
nz jump on not zero / if not zeros
e jump on A equal B
z jump on zero / if zeroes
nlh jump on not low or high
he jump on high or equal
nl jump on A not low
nm jump on not minus / if not mixed
le jump on low or equal
nh jump on A not high
np jump on not plus
no jump on not overflow / if not ones
For the compare and branch, and compare and trap instructions there
are 12 condition code strings that can be used as part of the mnemonic
in place of a mask operand in the instruction format:
instruction short form
------------------------------------------------------------
crb R1,R2,M3,D4(B4) crb<m> R1,R2,D4(B4)
cgrb R1,R2,M3,D4(B4) cgrb<m> R1,R2,D4(B4)
crj R1,R2,M3,I4 crj<m> R1,R2,I4
cgrj R1,R2,M3,I4 cgrj<m> R1,R2,I4
cib R1,I2,M3,D4(B4) cib<m> R1,I2,D4(B4)
cgib R1,I2,M3,D4(B4) cgib<m> R1,I2,D4(B4)
cij R1,I2,M3,I4 cij<m> R1,I2,I4
cgij R1,I2,M3,I4 cgij<m> R1,I2,I4
crt R1,R2,M3 crt<m> R1,R2
cgrt R1,R2,M3 cgrt<m> R1,R2
cit R1,I2,M3 cit<m> R1,I2
cgit R1,I2,M3 cgit<m> R1,I2
clrb R1,R2,M3,D4(B4) clrb<m> R1,R2,D4(B4)
clgrb R1,R2,M3,D4(B4) clgrb<m> R1,R2,D4(B4)
clrj R1,R2,M3,I4 clrj<m> R1,R2,I4
clgrj R1,R2,M3,I4 clgrj<m> R1,R2,I4
clib R1,I2,M3,D4(B4) clib<m> R1,I2,D4(B4)
clgib R1,I2,M3,D4(B4) clgib<m> R1,I2,D4(B4)
clij R1,I2,M3,I4 clij<m> R1,I2,I4
clgij R1,I2,M3,I4 clgij<m> R1,I2,I4
clrt R1,R2,M3 clrt<m> R1,R2
clgrt R1,R2,M3 clgrt<m> R1,R2
clfit R1,I2,M3 clfit<m> R1,I2
clgit R1,I2,M3 clgit<m> R1,I2
In the mnemonic for a compare and branch and compare and trap
instruction the condition code string <m> can be any of the following:
h jump on A high
nle jump on not low or equal
l jump on A low
nhe jump on not high or equal
ne jump on A not equal B
lh jump on low or high
e jump on A equal B
nlh jump on not low or high
nl jump on A not low
he jump on high or equal
nh jump on A not high
le jump on low or equal

File: as.info, Node: s390 Operand Modifier, Next: s390 Instruction Marker, Prev: s390 Aliases, Up: s390 Syntax
9.38.3.6 Instruction Operand Modifier
.....................................
If a symbol modifier is attached to a symbol in an expression for an
instruction operand field, the symbol term is replaced with a reference
to an object in the global offset table (GOT) or the procedure linkage
table (PLT). The following expressions are allowed: 'symbol@modifier +
constant', 'symbol@modifier + label + constant', and 'symbol@modifier -
label + constant'. The term 'symbol' is the symbol that will be entered
into the GOT or PLT, 'label' is a local label, and 'constant' is an
arbitrary expression that the assembler can evaluate to a constant
value.
The term '(symbol + constant1)@modifier +/- label + constant2' is
also accepted but a warning message is printed and the term is converted
to 'symbol@modifier +/- label + constant1 + constant2'.
'@got'
'@got12'
The @got modifier can be used for displacement fields, 16-bit
immediate fields and 32-bit pc-relative immediate fields. The
@got12 modifier is synonym to @got. The symbol is added to the
GOT. For displacement fields and 16-bit immediate fields the symbol
term is replaced with the offset from the start of the GOT to the
GOT slot for the symbol. For a 32-bit pc-relative field the
pc-relative offset to the GOT slot from the current instruction
address is used.
'@gotent'
The @gotent modifier can be used for 32-bit pc-relative immediate
fields. The symbol is added to the GOT and the symbol term is
replaced with the pc-relative offset from the current instruction
to the GOT slot for the symbol.
'@gotoff'
The @gotoff modifier can be used for 16-bit immediate fields. The
symbol term is replaced with the offset from the start of the GOT
to the address of the symbol.
'@gotplt'
The @gotplt modifier can be used for displacement fields, 16-bit
immediate fields, and 32-bit pc-relative immediate fields. A
procedure linkage table entry is generated for the symbol and a
jump slot for the symbol is added to the GOT. For displacement
fields and 16-bit immediate fields the symbol term is replaced with
the offset from the start of the GOT to the jump slot for the
symbol. For a 32-bit pc-relative field the pc-relative offset to
the jump slot from the current instruction address is used.
'@plt'
The @plt modifier can be used for 16-bit and 32-bit pc-relative
immediate fields. A procedure linkage table entry is generated for
the symbol. The symbol term is replaced with the relative offset
from the current instruction to the PLT entry for the symbol.
'@pltoff'
The @pltoff modifier can be used for 16-bit immediate fields. The
symbol term is replaced with the offset from the start of the PLT
to the address of the symbol.
'@gotntpoff'
The @gotntpoff modifier can be used for displacement fields. The
symbol is added to the static TLS block and the negated offset to
the symbol in the static TLS block is added to the GOT. The symbol
term is replaced with the offset to the GOT slot from the start of
the GOT.
'@indntpoff'
The @indntpoff modifier can be used for 32-bit pc-relative
immediate fields. The symbol is added to the static TLS block and
the negated offset to the symbol in the static TLS block is added
to the GOT. The symbol term is replaced with the pc-relative offset
to the GOT slot from the current instruction address.
For more information about the thread local storage modifiers
'gotntpoff' and 'indntpoff' see the ELF extension documentation 'ELF
Handling For Thread-Local Storage'.

File: as.info, Node: s390 Instruction Marker, Next: s390 Literal Pool Entries, Prev: s390 Operand Modifier, Up: s390 Syntax
9.38.3.7 Instruction Marker
...........................
The thread local storage instruction markers are used by the linker to
perform code optimization.
':tls_load'
The :tls_load marker is used to flag the load instruction in the
initial exec TLS model that retrieves the offset from the thread
pointer to a thread local storage variable from the GOT.
':tls_gdcall'
The :tls_gdcall marker is used to flag the branch-and-save
instruction to the __tls_get_offset function in the global dynamic
TLS model.
':tls_ldcall'
The :tls_ldcall marker is used to flag the branch-and-save
instruction to the __tls_get_offset function in the local dynamic
TLS model.
For more information about the thread local storage instruction
marker and the linker optimizations see the ELF extension documentation
'ELF Handling For Thread-Local Storage'.

File: as.info, Node: s390 Literal Pool Entries, Prev: s390 Instruction Marker, Up: s390 Syntax
9.38.3.8 Literal Pool Entries
.............................
A literal pool is a collection of values. To access the values a
pointer to the literal pool is loaded to a register, the literal pool
register. Usually, register %r13 is used as the literal pool register
(*note s390 Register::). Literal pool entries are created by adding the
suffix :lit1, :lit2, :lit4, or :lit8 to the end of an expression for an
instruction operand. The expression is added to the literal pool and
the operand is replaced with the offset to the literal in the literal
pool.
':lit1'
The literal pool entry is created as an 8-bit value. An operand
modifier must not be used for the original expression.
':lit2'
The literal pool entry is created as a 16 bit value. The operand
modifier @got may be used in the original expression. The term
'x@got:lit2' will put the got offset for the global symbol x to the
literal pool as 16 bit value.
':lit4'
The literal pool entry is created as a 32-bit value. The operand
modifier @got and @plt may be used in the original expression. The
term 'x@got:lit4' will put the got offset for the global symbol x
to the literal pool as a 32-bit value. The term 'x@plt:lit4' will
put the plt offset for the global symbol x to the literal pool as a
32-bit value.
':lit8'
The literal pool entry is created as a 64-bit value. The operand
modifier @got and @plt may be used in the original expression. The
term 'x@got:lit8' will put the got offset for the global symbol x
to the literal pool as a 64-bit value. The term 'x@plt:lit8' will
put the plt offset for the global symbol x to the literal pool as a
64-bit value.
The assembler directive '.ltorg' is used to emit all literal pool
entries to the current position.

File: as.info, Node: s390 Directives, Next: s390 Floating Point, Prev: s390 Syntax, Up: S/390-Dependent
9.38.4 Assembler Directives
---------------------------
'as' for s390 supports all of the standard ELF assembler directives as
outlined in the main part of this document. Some directives have been
extended and there are some additional directives, which are only
available for the s390 'as'.
'.insn'
This directive permits the numeric representation of an
instructions and makes the assembler insert the operands according
to one of the instructions formats for '.insn' (*note s390
Formats::). For example, the instruction 'l %r1,24(%r15)' could be
written as '.insn rx,0x58000000,%r1,24(%r15)'.
'.short'
'.long'
'.quad'
This directive places one or more 16-bit (.short), 32-bit (.long),
or 64-bit (.quad) values into the current section. If an ELF or
TLS modifier is used only the following expressions are allowed:
'symbol@modifier + constant', 'symbol@modifier + label + constant',
and 'symbol@modifier - label + constant'. The following modifiers
are available:
'@got'
'@got12'
The @got modifier can be used for .short, .long and .quad.
The @got12 modifier is synonym to @got. The symbol is added
to the GOT. The symbol term is replaced with offset from the
start of the GOT to the GOT slot for the symbol.
'@gotoff'
The @gotoff modifier can be used for .short, .long and .quad.
The symbol term is replaced with the offset from the start of
the GOT to the address of the symbol.
'@gotplt'
The @gotplt modifier can be used for .long and .quad. A
procedure linkage table entry is generated for the symbol and
a jump slot for the symbol is added to the GOT. The symbol
term is replaced with the offset from the start of the GOT to
the jump slot for the symbol.
'@plt'
The @plt modifier can be used for .long and .quad. A
procedure linkage table entry us generated for the symbol.
The symbol term is replaced with the address of the PLT entry
for the symbol.
'@pltoff'
The @pltoff modifier can be used for .short, .long and .quad.
The symbol term is replaced with the offset from the start of
the PLT to the address of the symbol.
'@tlsgd'
'@tlsldm'
The @tlsgd and @tlsldm modifier can be used for .long and
.quad. A tls_index structure for the symbol is added to the
GOT. The symbol term is replaced with the offset from the
start of the GOT to the tls_index structure.
'@gotntpoff'
'@indntpoff'
The @gotntpoff and @indntpoff modifier can be used for .long
and .quad. The symbol is added to the static TLS block and
the negated offset to the symbol in the static TLS block is
added to the GOT. For @gotntpoff the symbol term is replaced
with the offset from the start of the GOT to the GOT slot, for
@indntpoff the symbol term is replaced with the address of the
GOT slot.
'@dtpoff'
The @dtpoff modifier can be used for .long and .quad. The
symbol term is replaced with the offset of the symbol relative
to the start of the TLS block it is contained in.
'@ntpoff'
The @ntpoff modifier can be used for .long and .quad. The
symbol term is replaced with the offset of the symbol relative
to the TCB pointer.
For more information about the thread local storage modifiers see
the ELF extension documentation 'ELF Handling For Thread-Local
Storage'.
'.ltorg'
This directive causes the current contents of the literal pool to
be dumped to the current location (*note s390 Literal Pool
Entries::).
'.machine string'
This directive allows you to change the machine for which code is
generated. 'string' may be any of the '-march=' selection options
(without the -march=), 'push', or 'pop'. '.machine push' saves the
currently selected cpu, which may be restored with '.machine pop'.
Be aware that the cpu string has to be put into double quotes in
case it contains characters not appropriate for identifiers. So
you have to write '"z9-109"' instead of just 'z9-109'.
'.machinemode string'
This directive allows to change the architecture mode for which
code is being generated. 'string' may be 'esa', 'zarch',
'zarch_nohighgprs', 'push', or 'pop'. '.machinemode
zarch_nohighgprs' can be used to prevent the 'highgprs' flag from
being set in the ELF header of the output file. This is useful in
situations where the code is gated with a runtime check which makes
sure that the code is only executed on kernels providing the
'highgprs' feature. '.machinemode push' saves the currently
selected mode, which may be restored with '.machinemode pop'.

File: as.info, Node: s390 Floating Point, Prev: s390 Directives, Up: S/390-Dependent
9.38.5 Floating Point
---------------------
The assembler recognizes both the IEEE floating-point instruction and
the hexadecimal floating-point instructions. The floating-point
constructors '.float', '.single', and '.double' always emit the IEEE
format. To assemble hexadecimal floating-point constants the '.long'
and '.quad' directives must be used.

File: as.info, Node: SCORE-Dependent, Next: SH-Dependent, Prev: S/390-Dependent, Up: Machine Dependencies
9.39 SCORE Dependent Features
=============================
* Menu:
* SCORE-Opts:: Assembler options
* SCORE-Pseudo:: SCORE Assembler Directives
* SCORE-Syntax:: Syntax

File: as.info, Node: SCORE-Opts, Next: SCORE-Pseudo, Up: SCORE-Dependent
9.39.1 Options
--------------
The following table lists all available SCORE options.
'-G NUM'
This option sets the largest size of an object that can be
referenced implicitly with the 'gp' register. The default value is
8.
'-EB'
Assemble code for a big-endian cpu
'-EL'
Assemble code for a little-endian cpu
'-FIXDD'
Assemble code for fix data dependency
'-NWARN'
Assemble code for no warning message for fix data dependency
'-SCORE5'
Assemble code for target is SCORE5
'-SCORE5U'
Assemble code for target is SCORE5U
'-SCORE7'
Assemble code for target is SCORE7, this is default setting
'-SCORE3'
Assemble code for target is SCORE3
'-march=score7'
Assemble code for target is SCORE7, this is default setting
'-march=score3'
Assemble code for target is SCORE3
'-USE_R1'
Assemble code for no warning message when using temp register r1
'-KPIC'
Generate code for PIC. This option tells the assembler to generate
score position-independent macro expansions. It also tells the
assembler to mark the output file as PIC.
'-O0'
Assembler will not perform any optimizations
'-V'
Sunplus release version

File: as.info, Node: SCORE-Pseudo, Next: SCORE-Syntax, Prev: SCORE-Opts, Up: SCORE-Dependent
9.39.2 SCORE Assembler Directives
---------------------------------
A number of assembler directives are available for SCORE. The following
table is far from complete.
'.set nwarn'
Let the assembler not to generate warnings if the source machine
language instructions happen data dependency.
'.set fixdd'
Let the assembler to insert bubbles (32 bit nop instruction / 16
bit nop! Instruction) if the source machine language instructions
happen data dependency.
'.set nofixdd'
Let the assembler to generate warnings if the source machine
language instructions happen data dependency. (Default)
'.set r1'
Let the assembler not to generate warnings if the source program
uses r1. allow user to use r1
'set nor1'
Let the assembler to generate warnings if the source program uses
r1. (Default)
'.sdata'
Tell the assembler to add subsequent data into the sdata section
'.rdata'
Tell the assembler to add subsequent data into the rdata section
'.frame "frame-register", "offset", "return-pc-register"'
Describe a stack frame. "frame-register" is the frame register,
"offset" is the distance from the frame register to the virtual
frame pointer, "return-pc-register" is the return program register.
You must use ".ent" before ".frame" and only one ".frame" can be
used per ".ent".
'.mask "bitmask", "frameoffset"'
Indicate which of the integer registers are saved in the current
function's stack frame, this is for the debugger to explain the
frame chain.
'.ent "proc-name"'
Set the beginning of the procedure "proc_name". Use this directive
when you want to generate information for the debugger.
'.end proc-name'
Set the end of a procedure. Use this directive to generate
information for the debugger.
'.bss'
Switch the destination of following statements into the bss
section, which is used for data that is uninitialized anywhere.

File: as.info, Node: SCORE-Syntax, Prev: SCORE-Pseudo, Up: SCORE-Dependent
9.39.3 SCORE Syntax
-------------------
* Menu:
* SCORE-Chars:: Special Characters

File: as.info, Node: SCORE-Chars, Up: SCORE-Syntax
9.39.3.1 Special Characters
...........................
The presence of a '#' appearing anywhere on a line indicates the start
of a comment that extends to the end of that line.
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line can also be a logical
line number directive (*note Comments::) or a preprocessor control
command (*note Preprocessing::).
The ';' character can be used to separate statements on the same
line.

File: as.info, Node: SH-Dependent, Next: SH64-Dependent, Prev: SCORE-Dependent, Up: Machine Dependencies
9.40 Renesas / SuperH SH Dependent Features
===========================================
* Menu:
* SH Options:: Options
* SH Syntax:: Syntax
* SH Floating Point:: Floating Point
* SH Directives:: SH Machine Directives
* SH Opcodes:: Opcodes

File: as.info, Node: SH Options, Next: SH Syntax, Up: SH-Dependent
9.40.1 Options
--------------
'as' has following command-line options for the Renesas (formerly
Hitachi) / SuperH SH family.
'--little'
Generate little endian code.
'--big'
Generate big endian code.
'--relax'
Alter jump instructions for long displacements.
'--small'
Align sections to 4 byte boundaries, not 16.
'--dsp'
Enable sh-dsp insns, and disable sh3e / sh4 insns.
'--renesas'
Disable optimization with section symbol for compatibility with
Renesas assembler.
'--allow-reg-prefix'
Allow '$' as a register name prefix.
'--fdpic'
Generate an FDPIC object file.
'--isa=sh4 | sh4a'
Specify the sh4 or sh4a instruction set.
'--isa=dsp'
Enable sh-dsp insns, and disable sh3e / sh4 insns.
'--isa=fp'
Enable sh2e, sh3e, sh4, and sh4a insn sets.
'--isa=all'
Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
'-h-tick-hex'
Support H'00 style hex constants in addition to 0x00 style.

File: as.info, Node: SH Syntax, Next: SH Floating Point, Prev: SH Options, Up: SH-Dependent
9.40.2 Syntax
-------------
* Menu:
* SH-Chars:: Special Characters
* SH-Regs:: Register Names
* SH-Addressing:: Addressing Modes

File: as.info, Node: SH-Chars, Next: SH-Regs, Up: SH Syntax
9.40.2.1 Special Characters
...........................
'!' is the line comment character.
You can use ';' instead of a newline to separate statements.
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line could also be a
logical line number directive (*note Comments::) or a preprocessor
control command (*note Preprocessing::).
Since '$' has no special meaning, you may use it in symbol names.

File: as.info, Node: SH-Regs, Next: SH-Addressing, Prev: SH-Chars, Up: SH Syntax
9.40.2.2 Register Names
.......................
You can use the predefined symbols 'r0', 'r1', 'r2', 'r3', 'r4', 'r5',
'r6', 'r7', 'r8', 'r9', 'r10', 'r11', 'r12', 'r13', 'r14', and 'r15' to
refer to the SH registers.
The SH also has these control registers:
'pr'
procedure register (holds return address)
'pc'
program counter
'mach'
'macl'
high and low multiply accumulator registers
'sr'
status register
'gbr'
global base register
'vbr'
vector base register (for interrupt vectors)

File: as.info, Node: SH-Addressing, Prev: SH-Regs, Up: SH Syntax
9.40.2.3 Addressing Modes
.........................
'as' understands the following addressing modes for the SH. 'RN' in the
following refers to any of the numbered registers, but _not_ the control
registers.
'RN'
Register direct
'@RN'
Register indirect
'@-RN'
Register indirect with pre-decrement
'@RN+'
Register indirect with post-increment
'@(DISP, RN)'
Register indirect with displacement
'@(R0, RN)'
Register indexed
'@(DISP, GBR)'
'GBR' offset
'@(R0, GBR)'
GBR indexed
'ADDR'
'@(DISP, PC)'
PC relative address (for branch or for addressing memory). The
'as' implementation allows you to use the simpler form ADDR
anywhere a PC relative address is called for; the alternate form is
supported for compatibility with other assemblers.
'#IMM'
Immediate data

File: as.info, Node: SH Floating Point, Next: SH Directives, Prev: SH Syntax, Up: SH-Dependent
9.40.3 Floating Point
---------------------
SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
SH groups can use '.float' directive to generate IEEE floating-point
numbers.
SH2E and SH3E support single-precision floating point calculations as
well as entirely PCAPI compatible emulation of double-precision floating
point calculations. SH2E and SH3E instructions are a subset of the
floating point calculations conforming to the IEEE754 standard.
In addition to single-precision and double-precision floating-point
operation capability, the on-chip FPU of SH4 has a 128-bit graphic
engine that enables 32-bit floating-point data to be processed 128 bits
at a time. It also supports 4 * 4 array operations and inner product
operations. Also, a superscalar architecture is employed that enables
simultaneous execution of two instructions (including FPU instructions),
providing performance of up to twice that of conventional architectures
at the same frequency.

File: as.info, Node: SH Directives, Next: SH Opcodes, Prev: SH Floating Point, Up: SH-Dependent
9.40.4 SH Machine Directives
----------------------------
'uaword'
'ualong'
'uaquad'
'as' will issue a warning when a misaligned '.word', '.long', or
'.quad' directive is used. You may use '.uaword', '.ualong', or
'.uaquad' to indicate that the value is intentionally misaligned.

File: as.info, Node: SH Opcodes, Prev: SH Directives, Up: SH-Dependent
9.40.5 Opcodes
--------------
For detailed information on the SH machine instruction set, see
'SH-Microcomputer User's Manual' (Renesas) or 'SH-4 32-bit CPU Core
Architecture' (SuperH) and 'SuperH (SH) 64-Bit RISC Series' (SuperH).
'as' implements all the standard SH opcodes. No additional
pseudo-instructions are needed on this family. Note, however, that
because 'as' supports a simpler form of PC-relative addressing, you may
simply write (for example)
mov.l bar,r0
where other assemblers might require an explicit displacement to 'bar'
from the program counter:
mov.l @(DISP, PC)
Here is a summary of SH opcodes:
Legend:
Rn a numbered register
Rm another numbered register
#imm immediate data
disp displacement
disp8 8-bit displacement
disp12 12-bit displacement
add #imm,Rn lds.l @Rn+,PR
add Rm,Rn mac.w @Rm+,@Rn+
addc Rm,Rn mov #imm,Rn
addv Rm,Rn mov Rm,Rn
and #imm,R0 mov.b Rm,@(R0,Rn)
and Rm,Rn mov.b Rm,@-Rn
and.b #imm,@(R0,GBR) mov.b Rm,@Rn
bf disp8 mov.b @(disp,Rm),R0
bra disp12 mov.b @(disp,GBR),R0
bsr disp12 mov.b @(R0,Rm),Rn
bt disp8 mov.b @Rm+,Rn
clrmac mov.b @Rm,Rn
clrt mov.b R0,@(disp,Rm)
cmp/eq #imm,R0 mov.b R0,@(disp,GBR)
cmp/eq Rm,Rn mov.l Rm,@(disp,Rn)
cmp/ge Rm,Rn mov.l Rm,@(R0,Rn)
cmp/gt Rm,Rn mov.l Rm,@-Rn
cmp/hi Rm,Rn mov.l Rm,@Rn
cmp/hs Rm,Rn mov.l @(disp,Rn),Rm
cmp/pl Rn mov.l @(disp,GBR),R0
cmp/pz Rn mov.l @(disp,PC),Rn
cmp/str Rm,Rn mov.l @(R0,Rm),Rn
div0s Rm,Rn mov.l @Rm+,Rn
div0u mov.l @Rm,Rn
div1 Rm,Rn mov.l R0,@(disp,GBR)
exts.b Rm,Rn mov.w Rm,@(R0,Rn)
exts.w Rm,Rn mov.w Rm,@-Rn
extu.b Rm,Rn mov.w Rm,@Rn
extu.w Rm,Rn mov.w @(disp,Rm),R0
jmp @Rn mov.w @(disp,GBR),R0
jsr @Rn mov.w @(disp,PC),Rn
ldc Rn,GBR mov.w @(R0,Rm),Rn
ldc Rn,SR mov.w @Rm+,Rn
ldc Rn,VBR mov.w @Rm,Rn
ldc.l @Rn+,GBR mov.w R0,@(disp,Rm)
ldc.l @Rn+,SR mov.w R0,@(disp,GBR)
ldc.l @Rn+,VBR mova @(disp,PC),R0
lds Rn,MACH movt Rn
lds Rn,MACL muls Rm,Rn
lds Rn,PR mulu Rm,Rn
lds.l @Rn+,MACH neg Rm,Rn
lds.l @Rn+,MACL negc Rm,Rn
nop stc VBR,Rn
not Rm,Rn stc.l GBR,@-Rn
or #imm,R0 stc.l SR,@-Rn
or Rm,Rn stc.l VBR,@-Rn
or.b #imm,@(R0,GBR) sts MACH,Rn
rotcl Rn sts MACL,Rn
rotcr Rn sts PR,Rn
rotl Rn sts.l MACH,@-Rn
rotr Rn sts.l MACL,@-Rn
rte sts.l PR,@-Rn
rts sub Rm,Rn
sett subc Rm,Rn
shal Rn subv Rm,Rn
shar Rn swap.b Rm,Rn
shll Rn swap.w Rm,Rn
shll16 Rn tas.b @Rn
shll2 Rn trapa #imm
shll8 Rn tst #imm,R0
shlr Rn tst Rm,Rn
shlr16 Rn tst.b #imm,@(R0,GBR)
shlr2 Rn xor #imm,R0
shlr8 Rn xor Rm,Rn
sleep xor.b #imm,@(R0,GBR)
stc GBR,Rn xtrct Rm,Rn
stc SR,Rn

File: as.info, Node: SH64-Dependent, Next: Sparc-Dependent, Prev: SH-Dependent, Up: Machine Dependencies
9.41 SuperH SH64 Dependent Features
===================================
* Menu:
* SH64 Options:: Options
* SH64 Syntax:: Syntax
* SH64 Directives:: SH64 Machine Directives
* SH64 Opcodes:: Opcodes

File: as.info, Node: SH64 Options, Next: SH64 Syntax, Up: SH64-Dependent
9.41.1 Options
--------------
'-isa=sh4 | sh4a'
Specify the sh4 or sh4a instruction set.
'-isa=dsp'
Enable sh-dsp insns, and disable sh3e / sh4 insns.
'-isa=fp'
Enable sh2e, sh3e, sh4, and sh4a insn sets.
'-isa=all'
Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
'-isa=shmedia | -isa=shcompact'
Specify the default instruction set. 'SHmedia' specifies the
32-bit opcodes, and 'SHcompact' specifies the 16-bit opcodes
compatible with previous SH families. The default depends on the
ABI selected; the default for the 64-bit ABI is SHmedia, and the
default for the 32-bit ABI is SHcompact. If neither the ABI nor
the ISA is specified, the default is 32-bit SHcompact.
Note that the '.mode' pseudo-op is not permitted if the ISA is not
specified on the command line.
'-abi=32 | -abi=64'
Specify the default ABI. If the ISA is specified and the ABI is
not, the default ABI depends on the ISA, with SHmedia defaulting to
64-bit and SHcompact defaulting to 32-bit.
Note that the '.abi' pseudo-op is not permitted if the ABI is not
specified on the command line. When the ABI is specified on the
command line, any '.abi' pseudo-ops in the source must match it.
'-shcompact-const-crange'
Emit code-range descriptors for constants in SHcompact code
sections.
'-no-mix'
Disallow SHmedia code in the same section as constants and
SHcompact code.
'-no-expand'
Do not expand MOVI, PT, PTA or PTB instructions.
'-expand-pt32'
With -abi=64, expand PT, PTA and PTB instructions to 32 bits only.
'-h-tick-hex'
Support H'00 style hex constants in addition to 0x00 style.

File: as.info, Node: SH64 Syntax, Next: SH64 Directives, Prev: SH64 Options, Up: SH64-Dependent
9.41.2 Syntax
-------------
* Menu:
* SH64-Chars:: Special Characters
* SH64-Regs:: Register Names
* SH64-Addressing:: Addressing Modes

File: as.info, Node: SH64-Chars, Next: SH64-Regs, Up: SH64 Syntax
9.41.2.1 Special Characters
...........................
'!' is the line comment character.
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line could also be a
logical line number directive (*note Comments::) or a preprocessor
control command (*note Preprocessing::).
You can use ';' instead of a newline to separate statements.
Since '$' has no special meaning, you may use it in symbol names.

File: as.info, Node: SH64-Regs, Next: SH64-Addressing, Prev: SH64-Chars, Up: SH64 Syntax
9.41.2.2 Register Names
.......................
You can use the predefined symbols 'r0' through 'r63' to refer to the
SH64 general registers, 'cr0' through 'cr63' for control registers,
'tr0' through 'tr7' for target address registers, 'fr0' through 'fr63'
for single-precision floating point registers, 'dr0' through 'dr62'
(even numbered registers only) for double-precision floating point
registers, 'fv0' through 'fv60' (multiples of four only) for
single-precision floating point vectors, 'fp0' through 'fp62' (even
numbered registers only) for single-precision floating point pairs,
'mtrx0' through 'mtrx48' (multiples of 16 only) for 4x4 matrices of
single-precision floating point registers, 'pc' for the program counter,
and 'fpscr' for the floating point status and control register.
You can also refer to the control registers by the mnemonics 'sr',
'ssr', 'pssr', 'intevt', 'expevt', 'pexpevt', 'tra', 'spc', 'pspc',
'resvec', 'vbr', 'tea', 'dcr', 'kcr0', 'kcr1', 'ctc', and 'usr'.

File: as.info, Node: SH64-Addressing, Prev: SH64-Regs, Up: SH64 Syntax
9.41.2.3 Addressing Modes
.........................
SH64 operands consist of either a register or immediate value. The
immediate value can be a constant or label reference (or portion of a
label reference), as in this example:
movi 4,r2
pt function, tr4
movi (function >> 16) & 65535,r0
shori function & 65535, r0
ld.l r0,4,r0
Instruction label references can reference labels in either SHmedia
or SHcompact. To differentiate between the two, labels in SHmedia
sections will always have the least significant bit set (i.e. they will
be odd), which SHcompact labels will have the least significant bit
reset (i.e. they will be even). If you need to reference the actual
address of a label, you can use the 'datalabel' modifier, as in this
example:
.long function
.long datalabel function
In that example, the first longword may or may not have the least
significant bit set depending on whether the label is an SHmedia label
or an SHcompact label. The second longword will be the actual address
of the label, regardless of what type of label it is.

File: as.info, Node: SH64 Directives, Next: SH64 Opcodes, Prev: SH64 Syntax, Up: SH64-Dependent
9.41.3 SH64 Machine Directives
------------------------------
In addition to the SH directives, the SH64 provides the following
directives:
'.mode [shmedia|shcompact]'
'.isa [shmedia|shcompact]'
Specify the ISA for the following instructions (the two directives
are equivalent). Note that programs such as 'objdump' rely on
symbolic labels to determine when such mode switches occur (by
checking the least significant bit of the label's address), so such
mode/isa changes should always be followed by a label (in practice,
this is true anyway). Note that you cannot use these directives if
you didn't specify an ISA on the command line.
'.abi [32|64]'
Specify the ABI for the following instructions. Note that you
cannot use this directive unless you specified an ABI on the
command line, and the ABIs specified must match.

File: as.info, Node: SH64 Opcodes, Prev: SH64 Directives, Up: SH64-Dependent
9.41.4 Opcodes
--------------
For detailed information on the SH64 machine instruction set, see
'SuperH 64 bit RISC Series Architecture Manual' (SuperH, Inc.).
'as' implements all the standard SH64 opcodes. In addition, the
following pseudo-opcodes may be expanded into one or more alternate
opcodes:
'movi'
If the value doesn't fit into a standard 'movi' opcode, 'as' will
replace the 'movi' with a sequence of 'movi' and 'shori' opcodes.
'pt'
This expands to a sequence of 'movi' and 'shori' opcode, followed
by a 'ptrel' opcode, or to a 'pta' or 'ptb' opcode, depending on
the label referenced.

File: as.info, Node: Sparc-Dependent, Next: TIC54X-Dependent, Prev: SH64-Dependent, Up: Machine Dependencies
9.42 SPARC Dependent Features
=============================
* Menu:
* Sparc-Opts:: Options
* Sparc-Aligned-Data:: Option to enforce aligned data
* Sparc-Syntax:: Syntax
* Sparc-Float:: Floating Point
* Sparc-Directives:: Sparc Machine Directives

File: as.info, Node: Sparc-Opts, Next: Sparc-Aligned-Data, Up: Sparc-Dependent
9.42.1 Options
--------------
The SPARC chip family includes several successive versions, using the
same core instruction set, but including a few additional instructions
at each version. There are exceptions to this however. For details on
what instructions each variant supports, please see the chip's
architecture reference manual.
By default, 'as' assumes the core instruction set (SPARC v6), but
"bumps" the architecture level as needed: it switches to successively
higher architectures as it encounters instructions that only exist in
the higher levels.
If not configured for SPARC v9 ('sparc64-*-*') GAS will not bump past
sparclite by default, an option must be passed to enable the v9
instructions.
GAS treats sparclite as being compatible with v8, unless an
architecture is explicitly requested. SPARC v9 is always incompatible
with sparclite.
'-Av6 | -Av7 | -Av8 | -Aleon | -Asparclet | -Asparclite'
'-Av8plus | -Av8plusa | -Av8plusb | -Av8plusc | -Av8plusd | -Av8plusv'
'-Av9 | -Av9a | -Av9b | -Av9c | -Av9d | -Av9e | -Av9v | -Av9m'
'-Asparc | -Asparcvis | -Asparcvis2 | -Asparcfmaf | -Asparcima'
'-Asparcvis3 | -Asparcvis3r'
Use one of the '-A' options to select one of the SPARC
architectures explicitly. If you select an architecture
explicitly, 'as' reports a fatal error if it encounters an
instruction or feature requiring an incompatible or higher level.
'-Av8plus', '-Av8plusa', '-Av8plusb', '-Av8plusc', '-Av8plusd', and
'-Av8plusv' select a 32 bit environment.
'-Av9', '-Av9a', '-Av9b', '-Av9c', '-Av9d', '-Av9e', '-Av9v' and
'-Av9m' select a 64 bit environment and are not available unless
GAS is explicitly configured with 64 bit environment support.
'-Av8plusa' and '-Av9a' enable the SPARC V9 instruction set with
UltraSPARC VIS 1.0 extensions.
'-Av8plusb' and '-Av9b' enable the UltraSPARC VIS 2.0 instructions,
as well as the instructions enabled by '-Av8plusa' and '-Av9a'.
'-Av8plusc' and '-Av9c' enable the UltraSPARC Niagara instructions,
as well as the instructions enabled by '-Av8plusb' and '-Av9b'.
'-Av8plusd' and '-Av9d' enable the floating point fused
multiply-add, VIS 3.0, and HPC extension instructions, as well as
the instructions enabled by '-Av8plusc' and '-Av9c'.
'-Av8pluse' and '-Av9e' enable the cryptographic instructions, as
well as the instructions enabled by '-Av8plusd' and '-Av9d'.
'-Av8plusv' and '-Av9v' enable floating point unfused multiply-add,
and integer multiply-add, as well as the instructions enabled by
'-Av8pluse' and '-Av9e'.
'-Av8plusm' and '-Av9m' enable the VIS 4.0, subtract extended,
xmpmul, xmontmul and xmontsqr instructions, as well as the
instructions enabled by '-Av8plusv' and '-Av9v'.
'-Asparc' specifies a v9 environment. It is equivalent to '-Av9'
if the word size is 64-bit, and '-Av8plus' otherwise.
'-Asparcvis' specifies a v9a environment. It is equivalent to
'-Av9a' if the word size is 64-bit, and '-Av8plusa' otherwise.
'-Asparcvis2' specifies a v9b environment. It is equivalent to
'-Av9b' if the word size is 64-bit, and '-Av8plusb' otherwise.
'-Asparcfmaf' specifies a v9b environment with the floating point
fused multiply-add instructions enabled.
'-Asparcima' specifies a v9b environment with the integer
multiply-add instructions enabled.
'-Asparcvis3' specifies a v9b environment with the VIS 3.0, HPC ,
and floating point fused multiply-add instructions enabled.
'-Asparcvis3r' specifies a v9b environment with the VIS 3.0, HPC,
and floating point unfused multiply-add instructions enabled.
'-Asparc5' is equivalent to '-Av9m'.
'-xarch=v8plus | -xarch=v8plusa | -xarch=v8plusb | -xarch=v8plusc'
'-xarch=v8plusd | -xarch=v8plusv | -xarch=v9 | -xarch=v9a'
'-xarch=v9b | -xarch=v9c | -xarch=v9d | -xarch=v9e | -xarch=v9v | -xarch=v9m'
'-xarch=sparc | -xarch=sparcvis | -xarch=sparcvis2'
'-xarch=sparcfmaf | -xarch=sparcima | -xarch=sparcvis3'
'-xarch=sparcvis3r | -xarch=sparc5'
For compatibility with the SunOS v9 assembler. These options are
equivalent to -Av8plus, -Av8plusa, -Av8plusb, -Av8plusc, -Av8plusd,
-Av8plusv, -Av9, -Av9a, -Av9b, -Av9c, -Av9d, -Av9e, -Av9v, -Av9m,
-Asparc, -Asparcvis, -Asparcvis2, -Asparcfmaf, -Asparcima,
-Asparcvis3, and -Asparcvis3r, respectively.
'-bump'
Warn whenever it is necessary to switch to another level. If an
architecture level is explicitly requested, GAS will not issue
warnings until that level is reached, and will then bump the level
as required (except between incompatible levels).
'-32 | -64'
Select the word size, either 32 bits or 64 bits. These options are
only available with the ELF object file format, and require that
the necessary BFD support has been included.

File: as.info, Node: Sparc-Aligned-Data, Next: Sparc-Syntax, Prev: Sparc-Opts, Up: Sparc-Dependent
9.42.2 Enforcing aligned data
-----------------------------
SPARC GAS normally permits data to be misaligned. For example, it
permits the '.long' pseudo-op to be used on a byte boundary. However,
the native SunOS assemblers issue an error when they see misaligned
data.
You can use the '--enforce-aligned-data' option to make SPARC GAS
also issue an error about misaligned data, just as the SunOS assemblers
do.
The '--enforce-aligned-data' option is not the default because gcc
issues misaligned data pseudo-ops when it initializes certain packed
data structures (structures defined using the 'packed' attribute). You
may have to assemble with GAS in order to initialize packed data
structures in your own code.

File: as.info, Node: Sparc-Syntax, Next: Sparc-Float, Prev: Sparc-Aligned-Data, Up: Sparc-Dependent
9.42.3 Sparc Syntax
-------------------
The assembler syntax closely follows The Sparc Architecture Manual,
versions 8 and 9, as well as most extensions defined by Sun for their
UltraSPARC and Niagara line of processors.
* Menu:
* Sparc-Chars:: Special Characters
* Sparc-Regs:: Register Names
* Sparc-Constants:: Constant Names
* Sparc-Relocs:: Relocations
* Sparc-Size-Translations:: Size Translations

File: as.info, Node: Sparc-Chars, Next: Sparc-Regs, Up: Sparc-Syntax
9.42.3.1 Special Characters
...........................
A '!' character appearing anywhere on a line indicates the start of a
comment that extends to the end of that line.
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line could also be a
logical line number directive (*note Comments::) or a preprocessor
control command (*note Preprocessing::).
';' can be used instead of a newline to separate statements.

File: as.info, Node: Sparc-Regs, Next: Sparc-Constants, Prev: Sparc-Chars, Up: Sparc-Syntax
9.42.3.2 Register Names
.......................
The Sparc integer register file is broken down into global, outgoing,
local, and incoming.
* The 8 global registers are referred to as '%gN'.
* The 8 outgoing registers are referred to as '%oN'.
* The 8 local registers are referred to as '%lN'.
* The 8 incoming registers are referred to as '%iN'.
* The frame pointer register '%i6' can be referenced using the alias
'%fp'.
* The stack pointer register '%o6' can be referenced using the alias
'%sp'.
Floating point registers are simply referred to as '%fN'. When
assembling for pre-V9, only 32 floating point registers are available.
For V9 and later there are 64, but there are restrictions when
referencing the upper 32 registers. They can only be accessed as double
or quad, and thus only even or quad numbered accesses are allowed. For
example, '%f34' is a legal floating point register, but '%f35' is not.
Certain V9 instructions allow access to ancillary state registers.
Most simply they can be referred to as '%asrN' where N can be from 16 to
31. However, there are some aliases defined to reference ASR registers
defined for various UltraSPARC processors:
* The tick compare register is referred to as '%tick_cmpr'.
* The system tick register is referred to as '%stick'. An alias,
'%sys_tick', exists but is deprecated and should not be used by new
software.
* The system tick compare register is referred to as '%stick_cmpr'.
An alias, '%sys_tick_cmpr', exists but is deprecated and should not
be used by new software.
* The software interrupt register is referred to as '%softint'.
* The set software interrupt register is referred to as
'%set_softint'. The mnemonic '%softint_set' is provided as an
alias.
* The clear software interrupt register is referred to as
'%clear_softint'. The mnemonic '%softint_clear' is provided as an
alias.
* The performance instrumentation counters register is referred to as
'%pic'.
* The performance control register is referred to as '%pcr'.
* The graphics status register is referred to as '%gsr'.
* The V9 dispatch control register is referred to as '%dcr'.
Various V9 branch and conditional move instructions allow
specification of which set of integer condition codes to test. These
are referred to as '%xcc' and '%icc'.
In V9, there are 4 sets of floating point condition codes which are
referred to as '%fccN'.
Several special privileged and non-privileged registers exist:
* The V9 address space identifier register is referred to as '%asi'.
* The V9 restorable windows register is referred to as '%canrestore'.
* The V9 savable windows register is referred to as '%cansave'.
* The V9 clean windows register is referred to as '%cleanwin'.
* The V9 current window pointer register is referred to as '%cwp'.
* The floating-point queue register is referred to as '%fq'.
* The V8 co-processor queue register is referred to as '%cq'.
* The floating point status register is referred to as '%fsr'.
* The other windows register is referred to as '%otherwin'.
* The V9 program counter register is referred to as '%pc'.
* The V9 next program counter register is referred to as '%npc'.
* The V9 processor interrupt level register is referred to as '%pil'.
* The V9 processor state register is referred to as '%pstate'.
* The trap base address register is referred to as '%tba'.
* The V9 tick register is referred to as '%tick'.
* The V9 trap level is referred to as '%tl'.
* The V9 trap program counter is referred to as '%tpc'.
* The V9 trap next program counter is referred to as '%tnpc'.
* The V9 trap state is referred to as '%tstate'.
* The V9 trap type is referred to as '%tt'.
* The V9 condition codes is referred to as '%ccr'.
* The V9 floating-point registers state is referred to as '%fprs'.
* The V9 version register is referred to as '%ver'.
* The V9 window state register is referred to as '%wstate'.
* The Y register is referred to as '%y'.
* The V8 window invalid mask register is referred to as '%wim'.
* The V8 processor state register is referred to as '%psr'.
* The V9 global register level register is referred to as '%gl'.
Several special register names exist for hypervisor mode code:
* The hyperprivileged processor state register is referred to as
'%hpstate'.
* The hyperprivileged trap state register is referred to as
'%htstate'.
* The hyperprivileged interrupt pending register is referred to as
'%hintp'.
* The hyperprivileged trap base address register is referred to as
'%htba'.
* The hyperprivileged implementation version register is referred to
as '%hver'.
* The hyperprivileged system tick offset register is referred to as
'%hstick_offset'. Note that there is no '%hstick' register, the
normal '%stick' is used.
* The hyperprivileged system tick enable register is referred to as
'%hstick_enable'.
* The hyperprivileged system tick compare register is referred to as
'%hstick_cmpr'.

File: as.info, Node: Sparc-Constants, Next: Sparc-Relocs, Prev: Sparc-Regs, Up: Sparc-Syntax
9.42.3.3 Constants
..................
Several Sparc instructions take an immediate operand field for which
mnemonic names exist. Two such examples are 'membar' and 'prefetch'.
Another example are the set of V9 memory access instruction that allow
specification of an address space identifier.
The 'membar' instruction specifies a memory barrier that is the
defined by the operand which is a bitmask. The supported mask mnemonics
are:
* '#Sync' requests that all operations (including nonmemory reference
operations) appearing prior to the 'membar' must have been
performed and the effects of any exceptions become visible before
any instructions after the 'membar' may be initiated. This
corresponds to 'membar' cmask field bit 2.
* '#MemIssue' requests that all memory reference operations appearing
prior to the 'membar' must have been performed before any memory
operation after the 'membar' may be initiated. This corresponds to
'membar' cmask field bit 1.
* '#Lookaside' requests that a store appearing prior to the 'membar'
must complete before any load following the 'membar' referencing
the same address can be initiated. This corresponds to 'membar'
cmask field bit 0.
* '#StoreStore' defines that the effects of all stores appearing
prior to the 'membar' instruction must be visible to all processors
before the effect of any stores following the 'membar'. Equivalent
to the deprecated 'stbar' instruction. This corresponds to
'membar' mmask field bit 3.
* '#LoadStore' defines all loads appearing prior to the 'membar'
instruction must have been performed before the effect of any
stores following the 'membar' is visible to any other processor.
This corresponds to 'membar' mmask field bit 2.
* '#StoreLoad' defines that the effects of all stores appearing prior
to the 'membar' instruction must be visible to all processors
before loads following the 'membar' may be performed. This
corresponds to 'membar' mmask field bit 1.
* '#LoadLoad' defines that all loads appearing prior to the 'membar'
instruction must have been performed before any loads following the
'membar' may be performed. This corresponds to 'membar' mmask
field bit 0.
These values can be ored together, for example:
membar #Sync
membar #StoreLoad | #LoadLoad
membar #StoreLoad | #StoreStore
The 'prefetch' and 'prefetcha' instructions take a prefetch function
code. The following prefetch function code constant mnemonics are
available:
* '#n_reads' requests a prefetch for several reads, and corresponds
to a prefetch function code of 0.
'#one_read' requests a prefetch for one read, and corresponds to a
prefetch function code of 1.
'#n_writes' requests a prefetch for several writes (and possibly
reads), and corresponds to a prefetch function code of 2.
'#one_write' requests a prefetch for one write, and corresponds to
a prefetch function code of 3.
'#page' requests a prefetch page, and corresponds to a prefetch
function code of 4.
'#invalidate' requests a prefetch invalidate, and corresponds to a
prefetch function code of 16.
'#unified' requests a prefetch to the nearest unified cache, and
corresponds to a prefetch function code of 17.
'#n_reads_strong' requests a strong prefetch for several reads, and
corresponds to a prefetch function code of 20.
'#one_read_strong' requests a strong prefetch for one read, and
corresponds to a prefetch function code of 21.
'#n_writes_strong' requests a strong prefetch for several writes,
and corresponds to a prefetch function code of 22.
'#one_write_strong' requests a strong prefetch for one write, and
corresponds to a prefetch function code of 23.
Onle one prefetch code may be specified. Here are some examples:
prefetch [%l0 + %l2], #one_read
prefetch [%g2 + 8], #n_writes
prefetcha [%g1] 0x8, #unified
prefetcha [%o0 + 0x10] %asi, #n_reads
The actual behavior of a given prefetch function code is processor
specific. If a processor does not implement a given prefetch
function code, it will treat the prefetch instruction as a nop.
For instructions that accept an immediate address space identifier,
'as' provides many mnemonics corresponding to V9 defined as well as
UltraSPARC and Niagara extended values. For example, '#ASI_P' and
'#ASI_BLK_INIT_QUAD_LDD_AIUS'. See the V9 and processor specific
manuals for details.

File: as.info, Node: Sparc-Relocs, Next: Sparc-Size-Translations, Prev: Sparc-Constants, Up: Sparc-Syntax
9.42.3.4 Relocations
....................
ELF relocations are available as defined in the 32-bit and 64-bit Sparc
ELF specifications.
'R_SPARC_HI22' is obtained using '%hi' and 'R_SPARC_LO10' is obtained
using '%lo'. Likewise 'R_SPARC_HIX22' is obtained from '%hix' and
'R_SPARC_LOX10' is obtained using '%lox'. For example:
sethi %hi(symbol), %g1
or %g1, %lo(symbol), %g1
sethi %hix(symbol), %g1
xor %g1, %lox(symbol), %g1
These "high" mnemonics extract bits 31:10 of their operand, and the
"low" mnemonics extract bits 9:0 of their operand.
V9 code model relocations can be requested as follows:
* 'R_SPARC_HH22' is requested using '%hh'. It can also be generated
using '%uhi'.
* 'R_SPARC_HM10' is requested using '%hm'. It can also be generated
using '%ulo'.
* 'R_SPARC_LM22' is requested using '%lm'.
* 'R_SPARC_H44' is requested using '%h44'.
* 'R_SPARC_M44' is requested using '%m44'.
* 'R_SPARC_L44' is requested using '%l44' or '%l34'.
* 'R_SPARC_H34' is requested using '%h34'.
The '%l34' generates a 'R_SPARC_L44' relocation because it calculates
the necessary value, and therefore no explicit 'R_SPARC_L34' relocation
needed to be created for this purpose.
The '%h34' and '%l34' relocations are used for the abs34 code model.
Here is an example abs34 address generation sequence:
sethi %h34(symbol), %g1
sllx %g1, 2, %g1
or %g1, %l34(symbol), %g1
The PC relative relocation 'R_SPARC_PC22' can be obtained by
enclosing an operand inside of '%pc22'. Likewise, the 'R_SPARC_PC10'
relocation can be obtained using '%pc10'. These are mostly used when
assembling PIC code. For example, the standard PIC sequence on Sparc to
get the base of the global offset table, PC relative, into a register,
can be performed as:
sethi %pc22(_GLOBAL_OFFSET_TABLE_-4), %l7
add %l7, %pc10(_GLOBAL_OFFSET_TABLE_+4), %l7
Several relocations exist to allow the link editor to potentially
optimize GOT data references. The 'R_SPARC_GOTDATA_OP_HIX22' relocation
can obtained by enclosing an operand inside of '%gdop_hix22'. The
'R_SPARC_GOTDATA_OP_LOX10' relocation can obtained by enclosing an
operand inside of '%gdop_lox10'. Likewise, 'R_SPARC_GOTDATA_OP' can be
obtained by enclosing an operand inside of '%gdop'. For example,
assuming the GOT base is in register '%l7':
sethi %gdop_hix22(symbol), %l1
xor %l1, %gdop_lox10(symbol), %l1
ld [%l7 + %l1], %l2, %gdop(symbol)
There are many relocations that can be requested for access to thread
local storage variables. All of the Sparc TLS mnemonics are supported:
* 'R_SPARC_TLS_GD_HI22' is requested using '%tgd_hi22'.
* 'R_SPARC_TLS_GD_LO10' is requested using '%tgd_lo10'.
* 'R_SPARC_TLS_GD_ADD' is requested using '%tgd_add'.
* 'R_SPARC_TLS_GD_CALL' is requested using '%tgd_call'.
* 'R_SPARC_TLS_LDM_HI22' is requested using '%tldm_hi22'.
* 'R_SPARC_TLS_LDM_LO10' is requested using '%tldm_lo10'.
* 'R_SPARC_TLS_LDM_ADD' is requested using '%tldm_add'.
* 'R_SPARC_TLS_LDM_CALL' is requested using '%tldm_call'.
* 'R_SPARC_TLS_LDO_HIX22' is requested using '%tldo_hix22'.
* 'R_SPARC_TLS_LDO_LOX10' is requested using '%tldo_lox10'.
* 'R_SPARC_TLS_LDO_ADD' is requested using '%tldo_add'.
* 'R_SPARC_TLS_IE_HI22' is requested using '%tie_hi22'.
* 'R_SPARC_TLS_IE_LO10' is requested using '%tie_lo10'.
* 'R_SPARC_TLS_IE_LD' is requested using '%tie_ld'.
* 'R_SPARC_TLS_IE_LDX' is requested using '%tie_ldx'.
* 'R_SPARC_TLS_IE_ADD' is requested using '%tie_add'.
* 'R_SPARC_TLS_LE_HIX22' is requested using '%tle_hix22'.
* 'R_SPARC_TLS_LE_LOX10' is requested using '%tle_lox10'.
Here are some example TLS model sequences.
First, General Dynamic:
sethi %tgd_hi22(symbol), %l1
add %l1, %tgd_lo10(symbol), %l1
add %l7, %l1, %o0, %tgd_add(symbol)
call __tls_get_addr, %tgd_call(symbol)
nop
Local Dynamic:
sethi %tldm_hi22(symbol), %l1
add %l1, %tldm_lo10(symbol), %l1
add %l7, %l1, %o0, %tldm_add(symbol)
call __tls_get_addr, %tldm_call(symbol)
nop
sethi %tldo_hix22(symbol), %l1
xor %l1, %tldo_lox10(symbol), %l1
add %o0, %l1, %l1, %tldo_add(symbol)
Initial Exec:
sethi %tie_hi22(symbol), %l1
add %l1, %tie_lo10(symbol), %l1
ld [%l7 + %l1], %o0, %tie_ld(symbol)
add %g7, %o0, %o0, %tie_add(symbol)
sethi %tie_hi22(symbol), %l1
add %l1, %tie_lo10(symbol), %l1
ldx [%l7 + %l1], %o0, %tie_ldx(symbol)
add %g7, %o0, %o0, %tie_add(symbol)
And finally, Local Exec:
sethi %tle_hix22(symbol), %l1
add %l1, %tle_lox10(symbol), %l1
add %g7, %l1, %l1
When assembling for 64-bit, and a secondary constant addend is
specified in an address expression that would normally generate an
'R_SPARC_LO10' relocation, the assembler will emit an 'R_SPARC_OLO10'
instead.

File: as.info, Node: Sparc-Size-Translations, Prev: Sparc-Relocs, Up: Sparc-Syntax
9.42.3.5 Size Translations
..........................
Often it is desirable to write code in an operand size agnostic manner.
'as' provides support for this via operand size opcode translations.
Translations are supported for loads, stores, shifts, compare-and-swap
atomics, and the 'clr' synthetic instruction.
If generating 32-bit code, 'as' will generate the 32-bit opcode.
Whereas if 64-bit code is being generated, the 64-bit opcode will be
emitted. For example 'ldn' will be transformed into 'ld' for 32-bit
code and 'ldx' for 64-bit code.
Here is an example meant to demonstrate all the supported opcode
translations:
ldn [%o0], %o1
ldna [%o0] %asi, %o2
stn %o1, [%o0]
stna %o2, [%o0] %asi
slln %o3, 3, %o3
srln %o4, 8, %o4
sran %o5, 12, %o5
casn [%o0], %o1, %o2
casna [%o0] %asi, %o1, %o2
clrn %g1
In 32-bit mode 'as' will emit:
ld [%o0], %o1
lda [%o0] %asi, %o2
st %o1, [%o0]
sta %o2, [%o0] %asi
sll %o3, 3, %o3
srl %o4, 8, %o4
sra %o5, 12, %o5
cas [%o0], %o1, %o2
casa [%o0] %asi, %o1, %o2
clr %g1
And in 64-bit mode 'as' will emit:
ldx [%o0], %o1
ldxa [%o0] %asi, %o2
stx %o1, [%o0]
stxa %o2, [%o0] %asi
sllx %o3, 3, %o3
srlx %o4, 8, %o4
srax %o5, 12, %o5
casx [%o0], %o1, %o2
casxa [%o0] %asi, %o1, %o2
clrx %g1
Finally, the '.nword' translating directive is supported as well. It
is documented in the section on Sparc machine directives.

File: as.info, Node: Sparc-Float, Next: Sparc-Directives, Prev: Sparc-Syntax, Up: Sparc-Dependent
9.42.4 Floating Point
---------------------
The Sparc uses IEEE floating-point numbers.

File: as.info, Node: Sparc-Directives, Prev: Sparc-Float, Up: Sparc-Dependent
9.42.5 Sparc Machine Directives
-------------------------------
The Sparc version of 'as' supports the following additional machine
directives:
'.align'
This must be followed by the desired alignment in bytes.
'.common'
This must be followed by a symbol name, a positive number, and
'"bss"'. This behaves somewhat like '.comm', but the syntax is
different.
'.half'
This is functionally identical to '.short'.
'.nword'
On the Sparc, the '.nword' directive produces native word sized
value, ie. if assembling with -32 it is equivalent to '.word', if
assembling with -64 it is equivalent to '.xword'.
'.proc'
This directive is ignored. Any text following it on the same line
is also ignored.
'.register'
This directive declares use of a global application or system
register. It must be followed by a register name %g2, %g3, %g6 or
%g7, comma and the symbol name for that register. If symbol name
is '#scratch', it is a scratch register, if it is '#ignore', it
just suppresses any errors about using undeclared global register,
but does not emit any information about it into the object file.
This can be useful e.g. if you save the register before use and
restore it after.
'.reserve'
This must be followed by a symbol name, a positive number, and
'"bss"'. This behaves somewhat like '.lcomm', but the syntax is
different.
'.seg'
This must be followed by '"text"', '"data"', or '"data1"'. It
behaves like '.text', '.data', or '.data 1'.
'.skip'
This is functionally identical to the '.space' directive.
'.word'
On the Sparc, the '.word' directive produces 32 bit values, instead
of the 16 bit values it produces on many other machines.
'.xword'
On the Sparc V9 processor, the '.xword' directive produces 64 bit
values.

File: as.info, Node: TIC54X-Dependent, Next: TIC6X-Dependent, Prev: Sparc-Dependent, Up: Machine Dependencies
9.43 TIC54X Dependent Features
==============================
* Menu:
* TIC54X-Opts:: Command-line Options
* TIC54X-Block:: Blocking
* TIC54X-Env:: Environment Settings
* TIC54X-Constants:: Constants Syntax
* TIC54X-Subsyms:: String Substitution
* TIC54X-Locals:: Local Label Syntax
* TIC54X-Builtins:: Builtin Assembler Math Functions
* TIC54X-Ext:: Extended Addressing Support
* TIC54X-Directives:: Directives
* TIC54X-Macros:: Macro Features
* TIC54X-MMRegs:: Memory-mapped Registers
* TIC54X-Syntax:: Syntax

File: as.info, Node: TIC54X-Opts, Next: TIC54X-Block, Up: TIC54X-Dependent
9.43.1 Options
--------------
The TMS320C54X version of 'as' has a few machine-dependent options.
You can use the '-mfar-mode' option to enable extended addressing
mode. All addresses will be assumed to be > 16 bits, and the
appropriate relocation types will be used. This option is equivalent to
using the '.far_mode' directive in the assembly code. If you do not use
the '-mfar-mode' option, all references will be assumed to be 16 bits.
This option may be abbreviated to '-mf'.
You can use the '-mcpu' option to specify a particular CPU. This
option is equivalent to using the '.version' directive in the assembly
code. For recognized CPU codes, see *Note '.version':
TIC54X-Directives. The default CPU version is '542'.
You can use the '-merrors-to-file' option to redirect error output to
a file (this provided for those deficient environments which don't
provide adequate output redirection). This option may be abbreviated to
'-me'.

File: as.info, Node: TIC54X-Block, Next: TIC54X-Env, Prev: TIC54X-Opts, Up: TIC54X-Dependent
9.43.2 Blocking
---------------
A blocked section or memory block is guaranteed not to cross the
blocking boundary (usually a page, or 128 words) if it is smaller than
the blocking size, or to start on a page boundary if it is larger than
the blocking size.

File: as.info, Node: TIC54X-Env, Next: TIC54X-Constants, Prev: TIC54X-Block, Up: TIC54X-Dependent
9.43.3 Environment Settings
---------------------------
'C54XDSP_DIR' and 'A_DIR' are semicolon-separated paths which are added
to the list of directories normally searched for source and include
files. 'C54XDSP_DIR' will override 'A_DIR'.

File: as.info, Node: TIC54X-Constants, Next: TIC54X-Subsyms, Prev: TIC54X-Env, Up: TIC54X-Dependent
9.43.4 Constants Syntax
-----------------------
The TIC54X version of 'as' allows the following additional constant
formats, using a suffix to indicate the radix:
Binary 000000B, 011000b
Octal 10Q, 224q
Hexadecimal 45h, 0FH

File: as.info, Node: TIC54X-Subsyms, Next: TIC54X-Locals, Prev: TIC54X-Constants, Up: TIC54X-Dependent
9.43.5 String Substitution
--------------------------
A subset of allowable symbols (which we'll call subsyms) may be assigned
arbitrary string values. This is roughly equivalent to C preprocessor
#define macros. When 'as' encounters one of these symbols, the symbol
is replaced in the input stream by its string value. Subsym names
*must* begin with a letter.
Subsyms may be defined using the '.asg' and '.eval' directives (*Note
'.asg': TIC54X-Directives, *Note '.eval': TIC54X-Directives.
Expansion is recursive until a previously encountered symbol is seen,
at which point substitution stops.
In this example, x is replaced with SYM2; SYM2 is replaced with SYM1,
and SYM1 is replaced with x. At this point, x has already been
encountered and the substitution stops.
.asg "x",SYM1
.asg "SYM1",SYM2
.asg "SYM2",x
add x,a ; final code assembled is "add x, a"
Macro parameters are converted to subsyms; a side effect of this is
the normal 'as' '\ARG' dereferencing syntax is unnecessary. Subsyms
defined within a macro will have global scope, unless the '.var'
directive is used to identify the subsym as a local macro variable *note
'.var': TIC54X-Directives.
Substitution may be forced in situations where replacement might be
ambiguous by placing colons on either side of the subsym. The following
code:
.eval "10",x
LAB:X: add #x, a
When assembled becomes:
LAB10 add #10, a
Smaller parts of the string assigned to a subsym may be accessed with
the following syntax:
':SYMBOL(CHAR_INDEX):'
Evaluates to a single-character string, the character at
CHAR_INDEX.
':SYMBOL(START,LENGTH):'
Evaluates to a substring of SYMBOL beginning at START with length
LENGTH.

File: as.info, Node: TIC54X-Locals, Next: TIC54X-Builtins, Prev: TIC54X-Subsyms, Up: TIC54X-Dependent
9.43.6 Local Labels
-------------------
Local labels may be defined in two ways:
* $N, where N is a decimal number between 0 and 9
* LABEL?, where LABEL is any legal symbol name.
Local labels thus defined may be redefined or automatically
generated. The scope of a local label is based on when it may be
undefined or reset. This happens when one of the following situations
is encountered:
* .newblock directive *note '.newblock': TIC54X-Directives.
* The current section is changed (.sect, .text, or .data)
* Entering or leaving an included file
* The macro scope where the label was defined is exited

File: as.info, Node: TIC54X-Builtins, Next: TIC54X-Ext, Prev: TIC54X-Locals, Up: TIC54X-Dependent
9.43.7 Math Builtins
--------------------
The following built-in functions may be used to generate a
floating-point value. All return a floating-point value except '$cvi',
'$int', and '$sgn', which return an integer value.
'$acos(EXPR)'
Returns the floating point arccosine of EXPR.
'$asin(EXPR)'
Returns the floating point arcsine of EXPR.
'$atan(EXPR)'
Returns the floating point arctangent of EXPR.
'$atan2(EXPR1,EXPR2)'
Returns the floating point arctangent of EXPR1 / EXPR2.
'$ceil(EXPR)'
Returns the smallest integer not less than EXPR as floating point.
'$cosh(EXPR)'
Returns the floating point hyperbolic cosine of EXPR.
'$cos(EXPR)'
Returns the floating point cosine of EXPR.
'$cvf(EXPR)'
Returns the integer value EXPR converted to floating-point.
'$cvi(EXPR)'
Returns the floating point value EXPR converted to integer.
'$exp(EXPR)'
Returns the floating point value e ^ EXPR.
'$fabs(EXPR)'
Returns the floating point absolute value of EXPR.
'$floor(EXPR)'
Returns the largest integer that is not greater than EXPR as
floating point.
'$fmod(EXPR1,EXPR2)'
Returns the floating point remainder of EXPR1 / EXPR2.
'$int(EXPR)'
Returns 1 if EXPR evaluates to an integer, zero otherwise.
'$ldexp(EXPR1,EXPR2)'
Returns the floating point value EXPR1 * 2 ^ EXPR2.
'$log10(EXPR)'
Returns the base 10 logarithm of EXPR.
'$log(EXPR)'
Returns the natural logarithm of EXPR.
'$max(EXPR1,EXPR2)'
Returns the floating point maximum of EXPR1 and EXPR2.
'$min(EXPR1,EXPR2)'
Returns the floating point minimum of EXPR1 and EXPR2.
'$pow(EXPR1,EXPR2)'
Returns the floating point value EXPR1 ^ EXPR2.
'$round(EXPR)'
Returns the nearest integer to EXPR as a floating point number.
'$sgn(EXPR)'
Returns -1, 0, or 1 based on the sign of EXPR.
'$sin(EXPR)'
Returns the floating point sine of EXPR.
'$sinh(EXPR)'
Returns the floating point hyperbolic sine of EXPR.
'$sqrt(EXPR)'
Returns the floating point square root of EXPR.
'$tan(EXPR)'
Returns the floating point tangent of EXPR.
'$tanh(EXPR)'
Returns the floating point hyperbolic tangent of EXPR.
'$trunc(EXPR)'
Returns the integer value of EXPR truncated towards zero as
floating point.

File: as.info, Node: TIC54X-Ext, Next: TIC54X-Directives, Prev: TIC54X-Builtins, Up: TIC54X-Dependent
9.43.8 Extended Addressing
--------------------------
The 'LDX' pseudo-op is provided for loading the extended addressing bits
of a label or address. For example, if an address '_label' resides in
extended program memory, the value of '_label' may be loaded as follows:
ldx #_label,16,a ; loads extended bits of _label
or #_label,a ; loads lower 16 bits of _label
bacc a ; full address is in accumulator A

File: as.info, Node: TIC54X-Directives, Next: TIC54X-Macros, Prev: TIC54X-Ext, Up: TIC54X-Dependent
9.43.9 Directives
-----------------
'.align [SIZE]'
'.even'
Align the section program counter on the next boundary, based on
SIZE. SIZE may be any power of 2. '.even' is equivalent to
'.align' with a SIZE of 2.
'1'
Align SPC to word boundary
'2'
Align SPC to longword boundary (same as .even)
'128'
Align SPC to page boundary
'.asg STRING, NAME'
Assign NAME the string STRING. String replacement is performed on
STRING before assignment.
'.eval STRING, NAME'
Evaluate the contents of string STRING and assign the result as a
string to the subsym NAME. String replacement is performed on
STRING before assignment.
'.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
Reserve space for SYMBOL in the .bss section. SIZE is in words.
If present, BLOCKING_FLAG indicates the allocated space should be
aligned on a page boundary if it would otherwise cross a page
boundary. If present, ALIGNMENT_FLAG causes the assembler to
allocate SIZE on a long word boundary.
'.byte VALUE [,...,VALUE_N]'
'.ubyte VALUE [,...,VALUE_N]'
'.char VALUE [,...,VALUE_N]'
'.uchar VALUE [,...,VALUE_N]'
Place one or more bytes into consecutive words of the current
section. The upper 8 bits of each word is zero-filled. If a label
is used, it points to the word allocated for the first byte
encountered.
'.clink ["SECTION_NAME"]'
Set STYP_CLINK flag for this section, which indicates to the linker
that if no symbols from this section are referenced, the section
should not be included in the link. If SECTION_NAME is omitted,
the current section is used.
'.c_mode'
TBD.
'.copy "FILENAME" | FILENAME'
'.include "FILENAME" | FILENAME'
Read source statements from FILENAME. The normal include search
path is used. Normally .copy will cause statements from the
included file to be printed in the assembly listing and .include
will not, but this distinction is not currently implemented.
'.data'
Begin assembling code into the .data section.
'.double VALUE [,...,VALUE_N]'
'.ldouble VALUE [,...,VALUE_N]'
'.float VALUE [,...,VALUE_N]'
'.xfloat VALUE [,...,VALUE_N]'
Place an IEEE single-precision floating-point representation of one
or more floating-point values into the current section. All but
'.xfloat' align the result on a longword boundary. Values are
stored most-significant word first.
'.drlist'
'.drnolist'
Control printing of directives to the listing file. Ignored.
'.emsg STRING'
'.mmsg STRING'
'.wmsg STRING'
Emit a user-defined error, message, or warning, respectively.
'.far_mode'
Use extended addressing when assembling statements. This should
appear only once per file, and is equivalent to the -mfar-mode
option *note '-mfar-mode': TIC54X-Opts.
'.fclist'
'.fcnolist'
Control printing of false conditional blocks to the listing file.
'.field VALUE [,SIZE]'
Initialize a bitfield of SIZE bits in the current section. If
VALUE is relocatable, then SIZE must be 16. SIZE defaults to 16
bits. If VALUE does not fit into SIZE bits, the value will be
truncated. Successive '.field' directives will pack starting at
the current word, filling the most significant bits first, and
aligning to the start of the next word if the field size does not
fit into the space remaining in the current word. A '.align'
directive with an operand of 1 will force the next '.field'
directive to begin packing into a new word. If a label is used, it
points to the word that contains the specified field.
'.global SYMBOL [,...,SYMBOL_N]'
'.def SYMBOL [,...,SYMBOL_N]'
'.ref SYMBOL [,...,SYMBOL_N]'
'.def' nominally identifies a symbol defined in the current file
and available to other files. '.ref' identifies a symbol used in
the current file but defined elsewhere. Both map to the standard
'.global' directive.
'.half VALUE [,...,VALUE_N]'
'.uhalf VALUE [,...,VALUE_N]'
'.short VALUE [,...,VALUE_N]'
'.ushort VALUE [,...,VALUE_N]'
'.int VALUE [,...,VALUE_N]'
'.uint VALUE [,...,VALUE_N]'
'.word VALUE [,...,VALUE_N]'
'.uword VALUE [,...,VALUE_N]'
Place one or more values into consecutive words of the current
section. If a label is used, it points to the word allocated for
the first value encountered.
'.label SYMBOL'
Define a special SYMBOL to refer to the load time address of the
current section program counter.
'.length'
'.width'
Set the page length and width of the output listing file. Ignored.
'.list'
'.nolist'
Control whether the source listing is printed. Ignored.
'.long VALUE [,...,VALUE_N]'
'.ulong VALUE [,...,VALUE_N]'
'.xlong VALUE [,...,VALUE_N]'
Place one or more 32-bit values into consecutive words in the
current section. The most significant word is stored first.
'.long' and '.ulong' align the result on a longword boundary;
'xlong' does not.
'.loop [COUNT]'
'.break [CONDITION]'
'.endloop'
Repeatedly assemble a block of code. '.loop' begins the block, and
'.endloop' marks its termination. COUNT defaults to 1024, and
indicates the number of times the block should be repeated.
'.break' terminates the loop so that assembly begins after the
'.endloop' directive. The optional CONDITION will cause the loop
to terminate only if it evaluates to zero.
'MACRO_NAME .macro [PARAM1][,...PARAM_N]'
'[.mexit]'
'.endm'
See the section on macros for more explanation (*Note
TIC54X-Macros::.
'.mlib "FILENAME" | FILENAME'
Load the macro library FILENAME. FILENAME must be an archived
library (BFD ar-compatible) of text files, expected to contain only
macro definitions. The standard include search path is used.
'.mlist'
'.mnolist'
Control whether to include macro and loop block expansions in the
listing output. Ignored.
'.mmregs'
Define global symbolic names for the 'c54x registers. Supposedly
equivalent to executing '.set' directives for each register with
its memory-mapped value, but in reality is provided only for
compatibility and does nothing.
'.newblock'
This directive resets any TIC54X local labels currently defined.
Normal 'as' local labels are unaffected.
'.option OPTION_LIST'
Set listing options. Ignored.
'.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
Designate SECTION_NAME for blocking. Blocking guarantees that a
section will start on a page boundary (128 words) if it would
otherwise cross a page boundary. Only initialized sections may be
designated with this directive. See also *Note TIC54X-Block::.
'.sect "SECTION_NAME"'
Define a named initialized section and make it the current section.
'SYMBOL .set "VALUE"'
'SYMBOL .equ "VALUE"'
Equate a constant VALUE to a SYMBOL, which is placed in the symbol
table. SYMBOL may not be previously defined.
'.space SIZE_IN_BITS'
'.bes SIZE_IN_BITS'
Reserve the given number of bits in the current section and
zero-fill them. If a label is used with '.space', it points to the
*first* word reserved. With '.bes', the label points to the *last*
word reserved.
'.sslist'
'.ssnolist'
Controls the inclusion of subsym replacement in the listing output.
Ignored.
'.string "STRING" [,...,"STRING_N"]'
'.pstring "STRING" [,...,"STRING_N"]'
Place 8-bit characters from STRING into the current section.
'.string' zero-fills the upper 8 bits of each word, while
'.pstring' puts two characters into each word, filling the
most-significant bits first. Unused space is zero-filled. If a
label is used, it points to the first word initialized.
'[STAG] .struct [OFFSET]'
'[NAME_1] element [COUNT_1]'
'[NAME_2] element [COUNT_2]'
'[TNAME] .tag STAGX [TCOUNT]'
'...'
'[NAME_N] element [COUNT_N]'
'[SSIZE] .endstruct'
'LABEL .tag [STAG]'
Assign symbolic offsets to the elements of a structure. STAG
defines a symbol to use to reference the structure. OFFSET
indicates a starting value to use for the first element
encountered; otherwise it defaults to zero. Each element can have
a named offset, NAME, which is a symbol assigned the value of the
element's offset into the structure. If STAG is missing, these
become global symbols. COUNT adjusts the offset that many times,
as if 'element' were an array. 'element' may be one of '.byte',
'.word', '.long', '.float', or any equivalent of those, and the
structure offset is adjusted accordingly. '.field' and '.string'
are also allowed; the size of '.field' is one bit, and '.string' is
considered to be one word in size. Only element descriptors,
structure/union tags, '.align' and conditional assembly directives
are allowed within '.struct'/'.endstruct'. '.align' aligns member
offsets to word boundaries only. SSIZE, if provided, will always
be assigned the size of the structure.
The '.tag' directive, in addition to being used to define a
structure/union element within a structure, may be used to apply a
structure to a symbol. Once applied to LABEL, the individual
structure elements may be applied to LABEL to produce the desired
offsets using LABEL as the structure base.
'.tab'
Set the tab size in the output listing. Ignored.
'[UTAG] .union'
'[NAME_1] element [COUNT_1]'
'[NAME_2] element [COUNT_2]'
'[TNAME] .tag UTAGX[,TCOUNT]'
'...'
'[NAME_N] element [COUNT_N]'
'[USIZE] .endstruct'
'LABEL .tag [UTAG]'
Similar to '.struct', but the offset after each element is reset to
zero, and the USIZE is set to the maximum of all defined elements.
Starting offset for the union is always zero.
'[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
Reserve space for variables in a named, uninitialized section
(similar to .bss). '.usect' allows definitions sections
independent of .bss. SYMBOL points to the first location reserved
by this allocation. The symbol may be used as a variable name.
SIZE is the allocated size in words. BLOCKING_FLAG indicates
whether to block this section on a page boundary (128 words) (*note
TIC54X-Block::). ALIGNMENT FLAG indicates whether the section
should be longword-aligned.
'.var SYM[,..., SYM_N]'
Define a subsym to be a local variable within a macro. See *Note
TIC54X-Macros::.
'.version VERSION'
Set which processor to build instructions for. Though the
following values are accepted, the op is ignored.
'541'
'542'
'543'
'545'
'545LP'
'546LP'
'548'
'549'

File: as.info, Node: TIC54X-Macros, Next: TIC54X-MMRegs, Prev: TIC54X-Directives, Up: TIC54X-Dependent
9.43.10 Macros
--------------
Macros do not require explicit dereferencing of arguments (i.e., \ARG).
During macro expansion, the macro parameters are converted to
subsyms. If the number of arguments passed the macro invocation exceeds
the number of parameters defined, the last parameter is assigned the
string equivalent of all remaining arguments. If fewer arguments are
given than parameters, the missing parameters are assigned empty
strings. To include a comma in an argument, you must enclose the
argument in quotes.
The following built-in subsym functions allow examination of the
string value of subsyms (or ordinary strings). The arguments are
strings unless otherwise indicated (subsyms passed as args will be
replaced by the strings they represent).
'$symlen(STR)'
Returns the length of STR.
'$symcmp(STR1,STR2)'
Returns 0 if STR1 == STR2, non-zero otherwise.
'$firstch(STR,CH)'
Returns index of the first occurrence of character constant CH in
STR.
'$lastch(STR,CH)'
Returns index of the last occurrence of character constant CH in
STR.
'$isdefed(SYMBOL)'
Returns zero if the symbol SYMBOL is not in the symbol table,
non-zero otherwise.
'$ismember(SYMBOL,LIST)'
Assign the first member of comma-separated string LIST to SYMBOL;
LIST is reassigned the remainder of the list. Returns zero if LIST
is a null string. Both arguments must be subsyms.
'$iscons(EXPR)'
Returns 1 if string EXPR is binary, 2 if octal, 3 if hexadecimal, 4
if a character, 5 if decimal, and zero if not an integer.
'$isname(NAME)'
Returns 1 if NAME is a valid symbol name, zero otherwise.
'$isreg(REG)'
Returns 1 if REG is a valid predefined register name (AR0-AR7
only).
'$structsz(STAG)'
Returns the size of the structure or union represented by STAG.
'$structacc(STAG)'
Returns the reference point of the structure or union represented
by STAG. Always returns zero.

File: as.info, Node: TIC54X-MMRegs, Next: TIC54X-Syntax, Prev: TIC54X-Macros, Up: TIC54X-Dependent
9.43.11 Memory-mapped Registers
-------------------------------
The following symbols are recognized as memory-mapped registers:

File: as.info, Node: TIC54X-Syntax, Prev: TIC54X-MMRegs, Up: TIC54X-Dependent
9.43.12 TIC54X Syntax
---------------------
* Menu:
* TIC54X-Chars:: Special Characters

File: as.info, Node: TIC54X-Chars, Up: TIC54X-Syntax
9.43.12.1 Special Characters
............................
The presence of a ';' appearing anywhere on a line indicates the start
of a comment that extends to the end of that line.
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line can also be a logical
line number directive (*note Comments::) or a preprocessor control
command (*note Preprocessing::).
The presence of an asterisk ('*') at the start of a line also
indicates a comment that extends to the end of that line.
The TIC54X assembler does not currently support a line separator
character.

File: as.info, Node: TIC6X-Dependent, Next: TILE-Gx-Dependent, Prev: TIC54X-Dependent, Up: Machine Dependencies
9.44 TIC6X Dependent Features
=============================
* Menu:
* TIC6X Options:: Options
* TIC6X Syntax:: Syntax
* TIC6X Directives:: Directives

File: as.info, Node: TIC6X Options, Next: TIC6X Syntax, Up: TIC6X-Dependent
9.44.1 TIC6X Options
--------------------
'-march=ARCH'
Enable (only) instructions from architecture ARCH. By default, all
instructions are permitted.
The following values of ARCH are accepted: 'c62x', 'c64x', 'c64x+',
'c67x', 'c67x+', 'c674x'.
'-mdsbt'
'-mno-dsbt'
The '-mdsbt' option causes the assembler to generate the
'Tag_ABI_DSBT' attribute with a value of 1, indicating that the
code is using DSBT addressing. The '-mno-dsbt' option, the
default, causes the tag to have a value of 0, indicating that the
code does not use DSBT addressing. The linker will emit a warning
if objects of different type (DSBT and non-DSBT) are linked
together.
'-mpid=no'
'-mpid=near'
'-mpid=far'
The '-mpid=' option causes the assembler to generate the
'Tag_ABI_PID' attribute with a value indicating the form of data
addressing used by the code. '-mpid=no', the default, indicates
position-dependent data addressing, '-mpid=near' indicates
position-independent addressing with GOT accesses using near DP
addressing, and '-mpid=far' indicates position-independent
addressing with GOT accesses using far DP addressing. The linker
will emit a warning if objects built with different settings of
this option are linked together.
'-mpic'
'-mno-pic'
The '-mpic' option causes the assembler to generate the
'Tag_ABI_PIC' attribute with a value of 1, indicating that the code
is using position-independent code addressing, The '-mno-pic'
option, the default, causes the tag to have a value of 0,
indicating position-dependent code addressing. The linker will
emit a warning if objects of different type (position-dependent and
position-independent) are linked together.
'-mbig-endian'
'-mlittle-endian'
Generate code for the specified endianness. The default is
little-endian.

File: as.info, Node: TIC6X Syntax, Next: TIC6X Directives, Prev: TIC6X Options, Up: TIC6X-Dependent
9.44.2 TIC6X Syntax
-------------------
The presence of a ';' on a line indicates the start of a comment that
extends to the end of the current line. If a '#' or '*' appears as the
first character of a line, the whole line is treated as a comment. Note
that if a line starts with a '#' character then it can also be a logical
line number directive (*note Comments::) or a preprocessor control
command (*note Preprocessing::).
The '@' character can be used instead of a newline to separate
statements.
Instruction, register and functional unit names are case-insensitive.
'as' requires fully-specified functional unit names, such as '.S1',
'.L1X' or '.D1T2', on all instructions using a functional unit.
For some instructions, there may be syntactic ambiguity between
register or functional unit names and the names of labels or other
symbols. To avoid this, enclose the ambiguous symbol name in
parentheses; register and functional unit names may not be enclosed in
parentheses.

File: as.info, Node: TIC6X Directives, Prev: TIC6X Syntax, Up: TIC6X-Dependent
9.44.3 TIC6X Directives
-----------------------
Directives controlling the set of instructions accepted by the assembler
have effect for instructions between the directive and any subsequent
directive overriding it.
'.arch ARCH'
This has the same effect as '-march=ARCH'.
'.cantunwind'
Prevents unwinding through the current function. No personality
routine or exception table data is required or permitted.
If this is not specified then frame unwinding information will be
constructed from CFI directives. *note CFI directives::.
'.c6xabi_attribute TAG, VALUE'
Set the C6000 EABI build attribute TAG to VALUE.
The TAG is either an attribute number or one of 'Tag_ISA',
'Tag_ABI_wchar_t', 'Tag_ABI_stack_align_needed',
'Tag_ABI_stack_align_preserved', 'Tag_ABI_DSBT', 'Tag_ABI_PID',
'Tag_ABI_PIC', 'TAG_ABI_array_object_alignment',
'TAG_ABI_array_object_align_expected', 'Tag_ABI_compatibility' and
'Tag_ABI_conformance'. The VALUE is either a 'number', '"string"',
or 'number, "string"' depending on the tag.
'.ehtype SYMBOL'
Output an exception type table reference to SYMBOL.
'.endp'
Marks the end of and exception table or function. If preceeded by
a '.handlerdata' directive then this also switched back to the
previous text section.
'.handlerdata'
Marks the end of the current function, and the start of the
exception table entry for that function. Anything between this
directive and the '.endp' directive will be added to the exception
table entry.
Must be preceded by a CFI block containing a '.cfi_lsda' directive.
'.nocmp'
Disallow use of C64x+ compact instructions in the current text
section.
'.personalityindex INDEX'
Sets the personality routine for the current function to the ABI
specified compact routine number INDEX
'.personality NAME'
Sets the personality routine for the current function to NAME.
'.scomm SYMBOL, SIZE, ALIGN'
Like '.comm', creating a common symbol SYMBOL with size SIZE and
alignment ALIGN, but unlike when using '.comm', this symbol will be
placed into the small BSS section by the linker.

File: as.info, Node: TILE-Gx-Dependent, Next: TILEPro-Dependent, Prev: TIC6X-Dependent, Up: Machine Dependencies
9.45 TILE-Gx Dependent Features
===============================
* Menu:
* TILE-Gx Options:: TILE-Gx Options
* TILE-Gx Syntax:: TILE-Gx Syntax
* TILE-Gx Directives:: TILE-Gx Directives

File: as.info, Node: TILE-Gx Options, Next: TILE-Gx Syntax, Up: TILE-Gx-Dependent
9.45.1 Options
--------------
The following table lists all available TILE-Gx specific options:
'-m32 | -m64'
Select the word size, either 32 bits or 64 bits.
'-EB | -EL'
Select the endianness, either big-endian (-EB) or little-endian
(-EL).

File: as.info, Node: TILE-Gx Syntax, Next: TILE-Gx Directives, Prev: TILE-Gx Options, Up: TILE-Gx-Dependent
9.45.2 Syntax
-------------
Block comments are delimited by '/*' and '*/'. End of line comments may
be introduced by '#'.
Instructions consist of a leading opcode or macro name followed by
whitespace and an optional comma-separated list of operands:
OPCODE [OPERAND, ...]
Instructions must be separated by a newline or semicolon.
There are two ways to write code: either write naked instructions,
which the assembler is free to combine into VLIW bundles, or specify the
VLIW bundles explicitly.
Bundles are specified using curly braces:
{ ADD r3,r4,r5 ; ADD r7,r8,r9 ; LW r10,r11 }
A bundle can span multiple lines. If you want to put multiple
instructions on a line, whether in a bundle or not, you need to separate
them with semicolons as in this example.
A bundle may contain one or more instructions, up to the limit
specified by the ISA (currently three). If fewer instructions are
specified than the hardware supports in a bundle, the assembler inserts
'fnop' instructions automatically.
The assembler will prefer to preserve the ordering of instructions
within the bundle, putting the first instruction in a lower-numbered
pipeline than the next one, etc. This fact, combined with the optional
use of explicit 'fnop' or 'nop' instructions, allows precise control
over which pipeline executes each instruction.
If the instructions cannot be bundled in the listed order, the
assembler will automatically try to find a valid pipeline assignment.
If there is no way to bundle the instructions together, the assembler
reports an error.
The assembler does not yet auto-bundle (automatically combine
multiple instructions into one bundle), but it reserves the right to do
so in the future. If you want to force an instruction to run by itself,
put it in a bundle explicitly with curly braces and use 'nop'
instructions (not 'fnop') to fill the remaining pipeline slots in that
bundle.
* Menu:
* TILE-Gx Opcodes:: Opcode Naming Conventions.
* TILE-Gx Registers:: Register Naming.
* TILE-Gx Modifiers:: Symbolic Operand Modifiers.

File: as.info, Node: TILE-Gx Opcodes, Next: TILE-Gx Registers, Up: TILE-Gx Syntax
9.45.2.1 Opcode Names
.....................
For a complete list of opcodes and descriptions of their semantics, see
'TILE-Gx Instruction Set Architecture', available upon request at
www.tilera.com.

File: as.info, Node: TILE-Gx Registers, Next: TILE-Gx Modifiers, Prev: TILE-Gx Opcodes, Up: TILE-Gx Syntax
9.45.2.2 Register Names
.......................
General-purpose registers are represented by predefined symbols of the
form 'rN', where N represents a number between '0' and '63'. However,
the following registers have canonical names that must be used instead:
'r54'
sp
'r55'
lr
'r56'
sn
'r57'
idn0
'r58'
idn1
'r59'
udn0
'r60'
udn1
'r61'
udn2
'r62'
udn3
'r63'
zero
The assembler will emit a warning if a numeric name is used instead
of the non-numeric name. The '.no_require_canonical_reg_names'
assembler pseudo-op turns off this warning.
'.require_canonical_reg_names' turns it back on.

File: as.info, Node: TILE-Gx Modifiers, Prev: TILE-Gx Registers, Up: TILE-Gx Syntax
9.45.2.3 Symbolic Operand Modifiers
...................................
The assembler supports several modifiers when using symbol addresses in
TILE-Gx instruction operands. The general syntax is the following:
modifier(symbol)
The following modifiers are supported:
'hw0'
This modifier is used to load bits 0-15 of the symbol's address.
'hw1'
This modifier is used to load bits 16-31 of the symbol's address.
'hw2'
This modifier is used to load bits 32-47 of the symbol's address.
'hw3'
This modifier is used to load bits 48-63 of the symbol's address.
'hw0_last'
This modifier yields the same value as 'hw0', but it also checks
that the value does not overflow.
'hw1_last'
This modifier yields the same value as 'hw1', but it also checks
that the value does not overflow.
'hw2_last'
This modifier yields the same value as 'hw2', but it also checks
that the value does not overflow.
A 48-bit symbolic value is constructed by using the following
idiom:
moveli r0, hw2_last(sym)
shl16insli r0, r0, hw1(sym)
shl16insli r0, r0, hw0(sym)
'hw0_got'
This modifier is used to load bits 0-15 of the symbol's offset in
the GOT entry corresponding to the symbol.
'hw0_last_got'
This modifier yields the same value as 'hw0_got', but it also
checks that the value does not overflow.
'hw1_last_got'
This modifier is used to load bits 16-31 of the symbol's offset in
the GOT entry corresponding to the symbol, and it also checks that
the value does not overflow.
'plt'
This modifier is used for function symbols. It causes a _procedure
linkage table_, an array of code stubs, to be created at the time
the shared object is created or linked against, together with a
global offset table entry. The value is a pc-relative offset to
the corresponding stub code in the procedure linkage table. This
arrangement causes the run-time symbol resolver to be called to
look up and set the value of the symbol the first time the function
is called (at latest; depending environment variables). It is only
safe to leave the symbol unresolved this way if all references are
function calls.
'hw0_plt'
This modifier is used to load bits 0-15 of the pc-relative address
of a plt entry.
'hw1_plt'
This modifier is used to load bits 16-31 of the pc-relative address
of a plt entry.
'hw1_last_plt'
This modifier yields the same value as 'hw1_plt', but it also
checks that the value does not overflow.
'hw2_last_plt'
This modifier is used to load bits 32-47 of the pc-relative address
of a plt entry, and it also checks that the value does not
overflow.
'hw0_tls_gd'
This modifier is used to load bits 0-15 of the offset of the GOT
entry of the symbol's TLS descriptor, to be used for
general-dynamic TLS accesses.
'hw0_last_tls_gd'
This modifier yields the same value as 'hw0_tls_gd', but it also
checks that the value does not overflow.
'hw1_last_tls_gd'
This modifier is used to load bits 16-31 of the offset of the GOT
entry of the symbol's TLS descriptor, to be used for
general-dynamic TLS accesses. It also checks that the value does
not overflow.
'hw0_tls_ie'
This modifier is used to load bits 0-15 of the offset of the GOT
entry containing the offset of the symbol's address from the TCB,
to be used for initial-exec TLS accesses.
'hw0_last_tls_ie'
This modifier yields the same value as 'hw0_tls_ie', but it also
checks that the value does not overflow.
'hw1_last_tls_ie'
This modifier is used to load bits 16-31 of the offset of the GOT
entry containing the offset of the symbol's address from the TCB,
to be used for initial-exec TLS accesses. It also checks that the
value does not overflow.
'hw0_tls_le'
This modifier is used to load bits 0-15 of the offset of the
symbol's address from the TCB, to be used for local-exec TLS
accesses.
'hw0_last_tls_le'
This modifier yields the same value as 'hw0_tls_le', but it also
checks that the value does not overflow.
'hw1_last_tls_le'
This modifier is used to load bits 16-31 of the offset of the
symbol's address from the TCB, to be used for local-exec TLS
accesses. It also checks that the value does not overflow.
'tls_gd_call'
This modifier is used to tag an instrution as the "call" part of a
calling sequence for a TLS GD reference of its operand.
'tls_gd_add'
This modifier is used to tag an instruction as the "add" part of a
calling sequence for a TLS GD reference of its operand.
'tls_ie_load'
This modifier is used to tag an instruction as the "load" part of a
calling sequence for a TLS IE reference of its operand.

File: as.info, Node: TILE-Gx Directives, Prev: TILE-Gx Syntax, Up: TILE-Gx-Dependent
9.45.3 TILE-Gx Directives
-------------------------
'.align EXPRESSION [, EXPRESSION]'
This is the generic .ALIGN directive. The first argument is the
requested alignment in bytes.
'.allow_suspicious_bundles'
Turns on error checking for combinations of instructions in a
bundle that probably indicate a programming error. This is on by
default.
'.no_allow_suspicious_bundles'
Turns off error checking for combinations of instructions in a
bundle that probably indicate a programming error.
'.require_canonical_reg_names'
Require that canonical register names be used, and emit a warning
if the numeric names are used. This is on by default.
'.no_require_canonical_reg_names'
Permit the use of numeric names for registers that have canonical
names.

File: as.info, Node: TILEPro-Dependent, Next: Z80-Dependent, Prev: TILE-Gx-Dependent, Up: Machine Dependencies
9.46 TILEPro Dependent Features
===============================
* Menu:
* TILEPro Options:: TILEPro Options
* TILEPro Syntax:: TILEPro Syntax
* TILEPro Directives:: TILEPro Directives

File: as.info, Node: TILEPro Options, Next: TILEPro Syntax, Up: TILEPro-Dependent
9.46.1 Options
--------------
'as' has no machine-dependent command-line options for TILEPro.

File: as.info, Node: TILEPro Syntax, Next: TILEPro Directives, Prev: TILEPro Options, Up: TILEPro-Dependent
9.46.2 Syntax
-------------
Block comments are delimited by '/*' and '*/'. End of line comments may
be introduced by '#'.
Instructions consist of a leading opcode or macro name followed by
whitespace and an optional comma-separated list of operands:
OPCODE [OPERAND, ...]
Instructions must be separated by a newline or semicolon.
There are two ways to write code: either write naked instructions,
which the assembler is free to combine into VLIW bundles, or specify the
VLIW bundles explicitly.
Bundles are specified using curly braces:
{ ADD r3,r4,r5 ; ADD r7,r8,r9 ; LW r10,r11 }
A bundle can span multiple lines. If you want to put multiple
instructions on a line, whether in a bundle or not, you need to separate
them with semicolons as in this example.
A bundle may contain one or more instructions, up to the limit
specified by the ISA (currently three). If fewer instructions are
specified than the hardware supports in a bundle, the assembler inserts
'fnop' instructions automatically.
The assembler will prefer to preserve the ordering of instructions
within the bundle, putting the first instruction in a lower-numbered
pipeline than the next one, etc. This fact, combined with the optional
use of explicit 'fnop' or 'nop' instructions, allows precise control
over which pipeline executes each instruction.
If the instructions cannot be bundled in the listed order, the
assembler will automatically try to find a valid pipeline assignment.
If there is no way to bundle the instructions together, the assembler
reports an error.
The assembler does not yet auto-bundle (automatically combine
multiple instructions into one bundle), but it reserves the right to do
so in the future. If you want to force an instruction to run by itself,
put it in a bundle explicitly with curly braces and use 'nop'
instructions (not 'fnop') to fill the remaining pipeline slots in that
bundle.
* Menu:
* TILEPro Opcodes:: Opcode Naming Conventions.
* TILEPro Registers:: Register Naming.
* TILEPro Modifiers:: Symbolic Operand Modifiers.

File: as.info, Node: TILEPro Opcodes, Next: TILEPro Registers, Up: TILEPro Syntax
9.46.2.1 Opcode Names
.....................
For a complete list of opcodes and descriptions of their semantics, see
'TILE Processor User Architecture Manual', available upon request at
www.tilera.com.

File: as.info, Node: TILEPro Registers, Next: TILEPro Modifiers, Prev: TILEPro Opcodes, Up: TILEPro Syntax
9.46.2.2 Register Names
.......................
General-purpose registers are represented by predefined symbols of the
form 'rN', where N represents a number between '0' and '63'. However,
the following registers have canonical names that must be used instead:
'r54'
sp
'r55'
lr
'r56'
sn
'r57'
idn0
'r58'
idn1
'r59'
udn0
'r60'
udn1
'r61'
udn2
'r62'
udn3
'r63'
zero
The assembler will emit a warning if a numeric name is used instead
of the canonical name. The '.no_require_canonical_reg_names' assembler
pseudo-op turns off this warning. '.require_canonical_reg_names' turns
it back on.

File: as.info, Node: TILEPro Modifiers, Prev: TILEPro Registers, Up: TILEPro Syntax
9.46.2.3 Symbolic Operand Modifiers
...................................
The assembler supports several modifiers when using symbol addresses in
TILEPro instruction operands. The general syntax is the following:
modifier(symbol)
The following modifiers are supported:
'lo16'
This modifier is used to load the low 16 bits of the symbol's
address, sign-extended to a 32-bit value (sign-extension allows it
to be range-checked against signed 16 bit immediate operands
without complaint).
'hi16'
This modifier is used to load the high 16 bits of the symbol's
address, also sign-extended to a 32-bit value.
'ha16'
'ha16(N)' is identical to 'hi16(N)', except if 'lo16(N)' is
negative it adds one to the 'hi16(N)' value. This way 'lo16' and
'ha16' can be added to create any 32-bit value using 'auli'. For
example, here is how you move an arbitrary 32-bit address into r3:
moveli r3, lo16(sym)
auli r3, r3, ha16(sym)
'got'
This modifier is used to load the offset of the GOT entry
corresponding to the symbol.
'got_lo16'
This modifier is used to load the sign-extended low 16 bits of the
offset of the GOT entry corresponding to the symbol.
'got_hi16'
This modifier is used to load the sign-extended high 16 bits of the
offset of the GOT entry corresponding to the symbol.
'got_ha16'
This modifier is like 'got_hi16', but it adds one if 'got_lo16' of
the input value is negative.
'plt'
This modifier is used for function symbols. It causes a _procedure
linkage table_, an array of code stubs, to be created at the time
the shared object is created or linked against, together with a
global offset table entry. The value is a pc-relative offset to
the corresponding stub code in the procedure linkage table. This
arrangement causes the run-time symbol resolver to be called to
look up and set the value of the symbol the first time the function
is called (at latest; depending environment variables). It is only
safe to leave the symbol unresolved this way if all references are
function calls.
'tls_gd'
This modifier is used to load the offset of the GOT entry of the
symbol's TLS descriptor, to be used for general-dynamic TLS
accesses.
'tls_gd_lo16'
This modifier is used to load the sign-extended low 16 bits of the
offset of the GOT entry of the symbol's TLS descriptor, to be used
for general dynamic TLS accesses.
'tls_gd_hi16'
This modifier is used to load the sign-extended high 16 bits of the
offset of the GOT entry of the symbol's TLS descriptor, to be used
for general dynamic TLS accesses.
'tls_gd_ha16'
This modifier is like 'tls_gd_hi16', but it adds one to the value
if 'tls_gd_lo16' of the input value is negative.
'tls_ie'
This modifier is used to load the offset of the GOT entry
containing the offset of the symbol's address from the TCB, to be
used for initial-exec TLS accesses.
'tls_ie_lo16'
This modifier is used to load the low 16 bits of the offset of the
GOT entry containing the offset of the symbol's address from the
TCB, to be used for initial-exec TLS accesses.
'tls_ie_hi16'
This modifier is used to load the high 16 bits of the offset of the
GOT entry containing the offset of the symbol's address from the
TCB, to be used for initial-exec TLS accesses.
'tls_ie_ha16'
This modifier is like 'tls_ie_hi16', but it adds one to the value
if 'tls_ie_lo16' of the input value is negative.
'tls_le'
This modifier is used to load the offset of the symbol's address
from the TCB, to be used for local-exec TLS accesses.
'tls_le_lo16'
This modifier is used to load the low 16 bits of the offset of the
symbol's address from the TCB, to be used for local-exec TLS
accesses.
'tls_le_hi16'
This modifier is used to load the high 16 bits of the offset of the
symbol's address from the TCB, to be used for local-exec TLS
accesses.
'tls_le_ha16'
This modifier is like 'tls_le_hi16', but it adds one to the value
if 'tls_le_lo16' of the input value is negative.
'tls_gd_call'
This modifier is used to tag an instrution as the "call" part of a
calling sequence for a TLS GD reference of its operand.
'tls_gd_add'
This modifier is used to tag an instruction as the "add" part of a
calling sequence for a TLS GD reference of its operand.
'tls_ie_load'
This modifier is used to tag an instruction as the "load" part of a
calling sequence for a TLS IE reference of its operand.

File: as.info, Node: TILEPro Directives, Prev: TILEPro Syntax, Up: TILEPro-Dependent
9.46.3 TILEPro Directives
-------------------------
'.align EXPRESSION [, EXPRESSION]'
This is the generic .ALIGN directive. The first argument is the
requested alignment in bytes.
'.allow_suspicious_bundles'
Turns on error checking for combinations of instructions in a
bundle that probably indicate a programming error. This is on by
default.
'.no_allow_suspicious_bundles'
Turns off error checking for combinations of instructions in a
bundle that probably indicate a programming error.
'.require_canonical_reg_names'
Require that canonical register names be used, and emit a warning
if the numeric names are used. This is on by default.
'.no_require_canonical_reg_names'
Permit the use of numeric names for registers that have canonical
names.

File: as.info, Node: Z80-Dependent, Next: Z8000-Dependent, Prev: TILEPro-Dependent, Up: Machine Dependencies
9.47 Z80 Dependent Features
===========================
* Menu:
* Z80 Options:: Options
* Z80 Syntax:: Syntax
* Z80 Floating Point:: Floating Point
* Z80 Directives:: Z80 Machine Directives
* Z80 Opcodes:: Opcodes

File: as.info, Node: Z80 Options, Next: Z80 Syntax, Up: Z80-Dependent
9.47.1 Options
--------------
The Zilog Z80 and Ascii R800 version of 'as' have a few machine
dependent options.
'-z80'
Produce code for the Z80 processor. There are additional options
to request warnings and error messages for undocumented
instructions.
'-ignore-undocumented-instructions'
'-Wnud'
Silently assemble undocumented Z80-instructions that have been
adopted as documented R800-instructions.
'-ignore-unportable-instructions'
'-Wnup'
Silently assemble all undocumented Z80-instructions.
'-warn-undocumented-instructions'
'-Wud'
Issue warnings for undocumented Z80-instructions that work on R800,
do not assemble other undocumented instructions without warning.
'-warn-unportable-instructions'
'-Wup'
Issue warnings for other undocumented Z80-instructions, do not
treat any undocumented instructions as errors.
'-forbid-undocumented-instructions'
'-Fud'
Treat all undocumented z80-instructions as errors.
'-forbid-unportable-instructions'
'-Fup'
Treat undocumented z80-instructions that do not work on R800 as
errors.
'-r800'
Produce code for the R800 processor. The assembler does not
support undocumented instructions for the R800. In line with
common practice, 'as' uses Z80 instruction names for the R800
processor, as far as they exist.

File: as.info, Node: Z80 Syntax, Next: Z80 Floating Point, Prev: Z80 Options, Up: Z80-Dependent
9.47.2 Syntax
-------------
The assembler syntax closely follows the 'Z80 family CPU User Manual' by
Zilog. In expressions a single '=' may be used as "is equal to"
comparison operator.
Suffices can be used to indicate the radix of integer constants; 'H'
or 'h' for hexadecimal, 'D' or 'd' for decimal, 'Q', 'O', 'q' or 'o' for
octal, and 'B' for binary.
The suffix 'b' denotes a backreference to local label.
* Menu:
* Z80-Chars:: Special Characters
* Z80-Regs:: Register Names
* Z80-Case:: Case Sensitivity

File: as.info, Node: Z80-Chars, Next: Z80-Regs, Up: Z80 Syntax
9.47.2.1 Special Characters
...........................
The semicolon ';' is the line comment character;
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line could also be a
logical line number directive (*note Comments::) or a preprocessor
control command (*note Preprocessing::).
The Z80 assembler does not support a line separator character.
The dollar sign '$' can be used as a prefix for hexadecimal numbers
and as a symbol denoting the current location counter.
A backslash '\' is an ordinary character for the Z80 assembler.
The single quote ''' must be followed by a closing quote. If there
is one character in between, it is a character constant, otherwise it is
a string constant.

File: as.info, Node: Z80-Regs, Next: Z80-Case, Prev: Z80-Chars, Up: Z80 Syntax
9.47.2.2 Register Names
.......................
The registers are referred to with the letters assigned to them by
Zilog. In addition 'as' recognizes 'ixl' and 'ixh' as the least and
most significant octet in 'ix', and similarly 'iyl' and 'iyh' as parts
of 'iy'.

File: as.info, Node: Z80-Case, Prev: Z80-Regs, Up: Z80 Syntax
9.47.2.3 Case Sensitivity
.........................
Upper and lower case are equivalent in register names, opcodes,
condition codes and assembler directives. The case of letters is
significant in labels and symbol names. The case is also important to
distinguish the suffix 'b' for a backward reference to a local label
from the suffix 'B' for a number in binary notation.

File: as.info, Node: Z80 Floating Point, Next: Z80 Directives, Prev: Z80 Syntax, Up: Z80-Dependent
9.47.3 Floating Point
---------------------
Floating-point numbers are not supported.

File: as.info, Node: Z80 Directives, Next: Z80 Opcodes, Prev: Z80 Floating Point, Up: Z80-Dependent
9.47.4 Z80 Assembler Directives
-------------------------------
'as' for the Z80 supports some additional directives for compatibility
with other assemblers.
These are the additional directives in 'as' for the Z80:
'db EXPRESSION|STRING[,EXPRESSION|STRING...]'
'defb EXPRESSION|STRING[,EXPRESSION|STRING...]'
For each STRING the characters are copied to the object file, for
each other EXPRESSION the value is stored in one byte. A warning
is issued in case of an overflow.
'dw EXPRESSION[,EXPRESSION...]'
'defw EXPRESSION[,EXPRESSION...]'
For each EXPRESSION the value is stored in two bytes, ignoring
overflow.
'd24 EXPRESSION[,EXPRESSION...]'
'def24 EXPRESSION[,EXPRESSION...]'
For each EXPRESSION the value is stored in three bytes, ignoring
overflow.
'd32 EXPRESSION[,EXPRESSION...]'
'def32 EXPRESSION[,EXPRESSION...]'
For each EXPRESSION the value is stored in four bytes, ignoring
overflow.
'ds COUNT[, VALUE]'
'defs COUNT[, VALUE]'
Fill COUNT bytes in the object file with VALUE, if VALUE is omitted
it defaults to zero.
'SYMBOL equ EXPRESSION'
'SYMBOL defl EXPRESSION'
These directives set the value of SYMBOL to EXPRESSION. If 'equ'
is used, it is an error if SYMBOL is already defined. Symbols
defined with 'equ' are not protected from redefinition.
'set'
This is a normal instruction on Z80, and not an assembler
directive.
'psect NAME'
A synonym for *Note Section::, no second argument should be given.

File: as.info, Node: Z80 Opcodes, Prev: Z80 Directives, Up: Z80-Dependent
9.47.5 Opcodes
--------------
In line with common practice, Z80 mnemonics are used for both the Z80
and the R800.
In many instructions it is possible to use one of the half index
registers ('ixl','ixh','iyl','iyh') in stead of an 8-bit general purpose
register. This yields instructions that are documented on the R800 and
undocumented on the Z80. Similarly 'in f,(c)' is documented on the R800
and undocumented on the Z80.
The assembler also supports the following undocumented
Z80-instructions, that have not been adopted in the R800 instruction
set:
'out (c),0'
Sends zero to the port pointed to by register c.
'sli M'
Equivalent to 'M = (M<<1)+1', the operand M can be any operand that
is valid for 'sla'. One can use 'sll' as a synonym for 'sli'.
'OP (ix+D), R'
This is equivalent to
ld R, (ix+D)
OPC R
ld (ix+D), R
The operation 'OPC' may be any of 'res B,', 'set B,', 'rl', 'rlc',
'rr', 'rrc', 'sla', 'sli', 'sra' and 'srl', and the register 'R'
may be any of 'a', 'b', 'c', 'd', 'e', 'h' and 'l'.
'OPC (iy+D), R'
As above, but with 'iy' instead of 'ix'.
The web site at <http://www.z80.info> is a good starting place to
find more information on programming the Z80.

File: as.info, Node: Z8000-Dependent, Next: Vax-Dependent, Prev: Z80-Dependent, Up: Machine Dependencies
9.48 Z8000 Dependent Features
=============================
The Z8000 as supports both members of the Z8000 family: the unsegmented
Z8002, with 16 bit addresses, and the segmented Z8001 with 24 bit
addresses.
When the assembler is in unsegmented mode (specified with the
'unsegm' directive), an address takes up one word (16 bit) sized
register. When the assembler is in segmented mode (specified with the
'segm' directive), a 24-bit address takes up a long (32 bit) register.
*Note Assembler Directives for the Z8000: Z8000 Directives, for a list
of other Z8000 specific assembler directives.
* Menu:
* Z8000 Options:: Command-line options for the Z8000
* Z8000 Syntax:: Assembler syntax for the Z8000
* Z8000 Directives:: Special directives for the Z8000
* Z8000 Opcodes:: Opcodes

File: as.info, Node: Z8000 Options, Next: Z8000 Syntax, Up: Z8000-Dependent
9.48.1 Options
--------------
'-z8001'
Generate segmented code by default.
'-z8002'
Generate unsegmented code by default.

File: as.info, Node: Z8000 Syntax, Next: Z8000 Directives, Prev: Z8000 Options, Up: Z8000-Dependent
9.48.2 Syntax
-------------
* Menu:
* Z8000-Chars:: Special Characters
* Z8000-Regs:: Register Names
* Z8000-Addressing:: Addressing Modes

File: as.info, Node: Z8000-Chars, Next: Z8000-Regs, Up: Z8000 Syntax
9.48.2.1 Special Characters
...........................
'!' is the line comment character.
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line could also be a
logical line number directive (*note Comments::) or a preprocessor
control command (*note Preprocessing::).
You can use ';' instead of a newline to separate statements.

File: as.info, Node: Z8000-Regs, Next: Z8000-Addressing, Prev: Z8000-Chars, Up: Z8000 Syntax
9.48.2.2 Register Names
.......................
The Z8000 has sixteen 16 bit registers, numbered 0 to 15. You can refer
to different sized groups of registers by register number, with the
prefix 'r' for 16 bit registers, 'rr' for 32 bit registers and 'rq' for
64 bit registers. You can also refer to the contents of the first eight
(of the sixteen 16 bit registers) by bytes. They are named 'rlN' and
'rhN'.
_byte registers_
rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
_word registers_
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
_long word registers_
rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
_quad word registers_
rq0 rq4 rq8 rq12

File: as.info, Node: Z8000-Addressing, Prev: Z8000-Regs, Up: Z8000 Syntax
9.48.2.3 Addressing Modes
.........................
as understands the following addressing modes for the Z8000:
'rlN'
'rhN'
'rN'
'rrN'
'rqN'
Register direct: 8bit, 16bit, 32bit, and 64bit registers.
'@rN'
'@rrN'
Indirect register: @rrN in segmented mode, @rN in unsegmented mode.
'ADDR'
Direct: the 16 bit or 24 bit address (depending on whether the
assembler is in segmented or unsegmented mode) of the operand is in
the instruction.
'address(rN)'
Indexed: the 16 or 24 bit address is added to the 16 bit register
to produce the final address in memory of the operand.
'rN(#IMM)'
'rrN(#IMM)'
Base Address: the 16 or 24 bit register is added to the 16 bit sign
extended immediate displacement to produce the final address in
memory of the operand.
'rN(rM)'
'rrN(rM)'
Base Index: the 16 or 24 bit register rN or rrN is added to the
sign extended 16 bit index register rM to produce the final address
in memory of the operand.
'#XX'
Immediate data XX.

File: as.info, Node: Z8000 Directives, Next: Z8000 Opcodes, Prev: Z8000 Syntax, Up: Z8000-Dependent
9.48.3 Assembler Directives for the Z8000
-----------------------------------------
The Z8000 port of as includes additional assembler directives, for
compatibility with other Z8000 assemblers. These do not begin with '.'
(unlike the ordinary as directives).
'segm'
'.z8001'
Generate code for the segmented Z8001.
'unsegm'
'.z8002'
Generate code for the unsegmented Z8002.
'name'
Synonym for '.file'
'global'
Synonym for '.global'
'wval'
Synonym for '.word'
'lval'
Synonym for '.long'
'bval'
Synonym for '.byte'
'sval'
Assemble a string. 'sval' expects one string literal, delimited by
single quotes. It assembles each byte of the string into
consecutive addresses. You can use the escape sequence '%XX'
(where XX represents a two-digit hexadecimal number) to represent
the character whose ASCII value is XX. Use this feature to
describe single quote and other characters that may not appear in
string literals as themselves. For example, the C statement 'char *a = "he said \"it's 50% off\"";'
is represented in Z8000 assembly language (shown with the assembler
output in hex at the left) as
68652073 sval 'he said %22it%27s 50%25 off%22%00'
61696420
22697427
73203530
25206F66
662200
'rsect'
synonym for '.section'
'block'
synonym for '.space'
'even'
special case of '.align'; aligns output to even byte boundary.

File: as.info, Node: Z8000 Opcodes, Prev: Z8000 Directives, Up: Z8000-Dependent
9.48.4 Opcodes
--------------
For detailed information on the Z8000 machine instruction set, see
'Z8000 Technical Manual'.
The following table summarizes the opcodes and their arguments:
rs 16 bit source register
rd 16 bit destination register
rbs 8 bit source register
rbd 8 bit destination register
rrs 32 bit source register
rrd 32 bit destination register
rqs 64 bit source register
rqd 64 bit destination register
addr 16/24 bit address
imm immediate data
adc rd,rs clrb addr cpsir @rd,@rs,rr,cc
adcb rbd,rbs clrb addr(rd) cpsirb @rd,@rs,rr,cc
add rd,@rs clrb rbd dab rbd
add rd,addr com @rd dbjnz rbd,disp7
add rd,addr(rs) com addr dec @rd,imm4m1
add rd,imm16 com addr(rd) dec addr(rd),imm4m1
add rd,rs com rd dec addr,imm4m1
addb rbd,@rs comb @rd dec rd,imm4m1
addb rbd,addr comb addr decb @rd,imm4m1
addb rbd,addr(rs) comb addr(rd) decb addr(rd),imm4m1
addb rbd,imm8 comb rbd decb addr,imm4m1
addb rbd,rbs comflg flags decb rbd,imm4m1
addl rrd,@rs cp @rd,imm16 di i2
addl rrd,addr cp addr(rd),imm16 div rrd,@rs
addl rrd,addr(rs) cp addr,imm16 div rrd,addr
addl rrd,imm32 cp rd,@rs div rrd,addr(rs)
addl rrd,rrs cp rd,addr div rrd,imm16
and rd,@rs cp rd,addr(rs) div rrd,rs
and rd,addr cp rd,imm16 divl rqd,@rs
and rd,addr(rs) cp rd,rs divl rqd,addr
and rd,imm16 cpb @rd,imm8 divl rqd,addr(rs)
and rd,rs cpb addr(rd),imm8 divl rqd,imm32
andb rbd,@rs cpb addr,imm8 divl rqd,rrs
andb rbd,addr cpb rbd,@rs djnz rd,disp7
andb rbd,addr(rs) cpb rbd,addr ei i2
andb rbd,imm8 cpb rbd,addr(rs) ex rd,@rs
andb rbd,rbs cpb rbd,imm8 ex rd,addr
bit @rd,imm4 cpb rbd,rbs ex rd,addr(rs)
bit addr(rd),imm4 cpd rd,@rs,rr,cc ex rd,rs
bit addr,imm4 cpdb rbd,@rs,rr,cc exb rbd,@rs
bit rd,imm4 cpdr rd,@rs,rr,cc exb rbd,addr
bit rd,rs cpdrb rbd,@rs,rr,cc exb rbd,addr(rs)
bitb @rd,imm4 cpi rd,@rs,rr,cc exb rbd,rbs
bitb addr(rd),imm4 cpib rbd,@rs,rr,cc ext0e imm8
bitb addr,imm4 cpir rd,@rs,rr,cc ext0f imm8
bitb rbd,imm4 cpirb rbd,@rs,rr,cc ext8e imm8
bitb rbd,rs cpl rrd,@rs ext8f imm8
bpt cpl rrd,addr exts rrd
call @rd cpl rrd,addr(rs) extsb rd
call addr cpl rrd,imm32 extsl rqd
call addr(rd) cpl rrd,rrs halt
calr disp12 cpsd @rd,@rs,rr,cc in rd,@rs
clr @rd cpsdb @rd,@rs,rr,cc in rd,imm16
clr addr cpsdr @rd,@rs,rr,cc inb rbd,@rs
clr addr(rd) cpsdrb @rd,@rs,rr,cc inb rbd,imm16
clr rd cpsi @rd,@rs,rr,cc inc @rd,imm4m1
clrb @rd cpsib @rd,@rs,rr,cc inc addr(rd),imm4m1
inc addr,imm4m1 ldb rbd,rs(rx) mult rrd,addr(rs)
inc rd,imm4m1 ldb rd(imm16),rbs mult rrd,imm16
incb @rd,imm4m1 ldb rd(rx),rbs mult rrd,rs
incb addr(rd),imm4m1 ldctl ctrl,rs multl rqd,@rs
incb addr,imm4m1 ldctl rd,ctrl multl rqd,addr
incb rbd,imm4m1 ldd @rs,@rd,rr multl rqd,addr(rs)
ind @rd,@rs,ra lddb @rs,@rd,rr multl rqd,imm32
indb @rd,@rs,rba lddr @rs,@rd,rr multl rqd,rrs
inib @rd,@rs,ra lddrb @rs,@rd,rr neg @rd
inibr @rd,@rs,ra ldi @rd,@rs,rr neg addr
iret ldib @rd,@rs,rr neg addr(rd)
jp cc,@rd ldir @rd,@rs,rr neg rd
jp cc,addr ldirb @rd,@rs,rr negb @rd
jp cc,addr(rd) ldk rd,imm4 negb addr
jr cc,disp8 ldl @rd,rrs negb addr(rd)
ld @rd,imm16 ldl addr(rd),rrs negb rbd
ld @rd,rs ldl addr,rrs nop
ld addr(rd),imm16 ldl rd(imm16),rrs or rd,@rs
ld addr(rd),rs ldl rd(rx),rrs or rd,addr
ld addr,imm16 ldl rrd,@rs or rd,addr(rs)
ld addr,rs ldl rrd,addr or rd,imm16
ld rd(imm16),rs ldl rrd,addr(rs) or rd,rs
ld rd(rx),rs ldl rrd,imm32 orb rbd,@rs
ld rd,@rs ldl rrd,rrs orb rbd,addr
ld rd,addr ldl rrd,rs(imm16) orb rbd,addr(rs)
ld rd,addr(rs) ldl rrd,rs(rx) orb rbd,imm8
ld rd,imm16 ldm @rd,rs,n orb rbd,rbs
ld rd,rs ldm addr(rd),rs,n out @rd,rs
ld rd,rs(imm16) ldm addr,rs,n out imm16,rs
ld rd,rs(rx) ldm rd,@rs,n outb @rd,rbs
lda rd,addr ldm rd,addr(rs),n outb imm16,rbs
lda rd,addr(rs) ldm rd,addr,n outd @rd,@rs,ra
lda rd,rs(imm16) ldps @rs outdb @rd,@rs,rba
lda rd,rs(rx) ldps addr outib @rd,@rs,ra
ldar rd,disp16 ldps addr(rs) outibr @rd,@rs,ra
ldb @rd,imm8 ldr disp16,rs pop @rd,@rs
ldb @rd,rbs ldr rd,disp16 pop addr(rd),@rs
ldb addr(rd),imm8 ldrb disp16,rbs pop addr,@rs
ldb addr(rd),rbs ldrb rbd,disp16 pop rd,@rs
ldb addr,imm8 ldrl disp16,rrs popl @rd,@rs
ldb addr,rbs ldrl rrd,disp16 popl addr(rd),@rs
ldb rbd,@rs mbit popl addr,@rs
ldb rbd,addr mreq rd popl rrd,@rs
ldb rbd,addr(rs) mres push @rd,@rs
ldb rbd,imm8 mset push @rd,addr
ldb rbd,rbs mult rrd,@rs push @rd,addr(rs)
ldb rbd,rs(imm16) mult rrd,addr push @rd,imm16
push @rd,rs set addr,imm4 subl rrd,imm32
pushl @rd,@rs set rd,imm4 subl rrd,rrs
pushl @rd,addr set rd,rs tcc cc,rd
pushl @rd,addr(rs) setb @rd,imm4 tccb cc,rbd
pushl @rd,rrs setb addr(rd),imm4 test @rd
res @rd,imm4 setb addr,imm4 test addr
res addr(rd),imm4 setb rbd,imm4 test addr(rd)
res addr,imm4 setb rbd,rs test rd
res rd,imm4 setflg imm4 testb @rd
res rd,rs sinb rbd,imm16 testb addr
resb @rd,imm4 sinb rd,imm16 testb addr(rd)
resb addr(rd),imm4 sind @rd,@rs,ra testb rbd
resb addr,imm4 sindb @rd,@rs,rba testl @rd
resb rbd,imm4 sinib @rd,@rs,ra testl addr
resb rbd,rs sinibr @rd,@rs,ra testl addr(rd)
resflg imm4 sla rd,imm8 testl rrd
ret cc slab rbd,imm8 trdb @rd,@rs,rba
rl rd,imm1or2 slal rrd,imm8 trdrb @rd,@rs,rba
rlb rbd,imm1or2 sll rd,imm8 trib @rd,@rs,rbr
rlc rd,imm1or2 sllb rbd,imm8 trirb @rd,@rs,rbr
rlcb rbd,imm1or2 slll rrd,imm8 trtdrb @ra,@rb,rbr
rldb rbb,rba sout imm16,rs trtib @ra,@rb,rr
rr rd,imm1or2 soutb imm16,rbs trtirb @ra,@rb,rbr
rrb rbd,imm1or2 soutd @rd,@rs,ra trtrb @ra,@rb,rbr
rrc rd,imm1or2 soutdb @rd,@rs,rba tset @rd
rrcb rbd,imm1or2 soutib @rd,@rs,ra tset addr
rrdb rbb,rba soutibr @rd,@rs,ra tset addr(rd)
rsvd36 sra rd,imm8 tset rd
rsvd38 srab rbd,imm8 tsetb @rd
rsvd78 sral rrd,imm8 tsetb addr
rsvd7e srl rd,imm8 tsetb addr(rd)
rsvd9d srlb rbd,imm8 tsetb rbd
rsvd9f srll rrd,imm8 xor rd,@rs
rsvdb9 sub rd,@rs xor rd,addr
rsvdbf sub rd,addr xor rd,addr(rs)
sbc rd,rs sub rd,addr(rs) xor rd,imm16
sbcb rbd,rbs sub rd,imm16 xor rd,rs
sc imm8 sub rd,rs xorb rbd,@rs
sda rd,rs subb rbd,@rs xorb rbd,addr
sdab rbd,rs subb rbd,addr xorb rbd,addr(rs)
sdal rrd,rs subb rbd,addr(rs) xorb rbd,imm8
sdl rd,rs subb rbd,imm8 xorb rbd,rbs
sdlb rbd,rs subb rbd,rbs xorb rbd,rbs
sdll rrd,rs subl rrd,@rs
set @rd,imm4 subl rrd,addr
set addr(rd),imm4 subl rrd,addr(rs)

File: as.info, Node: Vax-Dependent, Next: V850-Dependent, Prev: Z8000-Dependent, Up: Machine Dependencies
9.49 VAX Dependent Features
===========================
* Menu:
* VAX-Opts:: VAX Command-Line Options
* VAX-float:: VAX Floating Point
* VAX-directives:: Vax Machine Directives
* VAX-opcodes:: VAX Opcodes
* VAX-branch:: VAX Branch Improvement
* VAX-operands:: VAX Operands
* VAX-no:: Not Supported on VAX
* VAX-Syntax:: VAX Syntax

File: as.info, Node: VAX-Opts, Next: VAX-float, Up: Vax-Dependent
9.49.1 VAX Command-Line Options
-------------------------------
The Vax version of 'as' accepts any of the following options, gives a
warning message that the option was ignored and proceeds. These options
are for compatibility with scripts designed for other people's
assemblers.
'-D (Debug)'
'-S (Symbol Table)'
'-T (Token Trace)'
These are obsolete options used to debug old assemblers.
'-d (Displacement size for JUMPs)'
This option expects a number following the '-d'. Like options that
expect filenames, the number may immediately follow the '-d' (old
standard) or constitute the whole of the command line argument that
follows '-d' (GNU standard).
'-V (Virtualize Interpass Temporary File)'
Some other assemblers use a temporary file. This option commanded
them to keep the information in active memory rather than in a disk
file. 'as' always does this, so this option is redundant.
'-J (JUMPify Longer Branches)'
Many 32-bit computers permit a variety of branch instructions to do
the same job. Some of these instructions are short (and fast) but
have a limited range; others are long (and slow) but can branch
anywhere in virtual memory. Often there are 3 flavors of branch:
short, medium and long. Some other assemblers would emit short and
medium branches, unless told by this option to emit short and long
branches.
'-t (Temporary File Directory)'
Some other assemblers may use a temporary file, and this option
takes a filename being the directory to site the temporary file.
Since 'as' does not use a temporary disk file, this option makes no
difference. '-t' needs exactly one filename.
The Vax version of the assembler accepts additional options when
compiled for VMS:
'-h N'
External symbol or section (used for global variables) names are
not case sensitive on VAX/VMS and always mapped to upper case.
This is contrary to the C language definition which explicitly
distinguishes upper and lower case. To implement a standard
conforming C compiler, names must be changed (mapped) to preserve
the case information. The default mapping is to convert all lower
case characters to uppercase and adding an underscore followed by a
6 digit hex value, representing a 24 digit binary value. The one
digits in the binary value represent which characters are uppercase
in the original symbol name.
The '-h N' option determines how we map names. This takes several
values. No '-h' switch at all allows case hacking as described
above. A value of zero ('-h0') implies names should be upper case,
and inhibits the case hack. A value of 2 ('-h2') implies names
should be all lower case, with no case hack. A value of 3 ('-h3')
implies that case should be preserved. The value 1 is unused. The
'-H' option directs 'as' to display every mapped symbol during
assembly.
Symbols whose names include a dollar sign '$' are exceptions to the
general name mapping. These symbols are normally only used to
reference VMS library names. Such symbols are always mapped to
upper case.
'-+'
The '-+' option causes 'as' to truncate any symbol name larger than
31 characters. The '-+' option also prevents some code following
the '_main' symbol normally added to make the object file
compatible with Vax-11 "C".
'-1'
This option is ignored for backward compatibility with 'as' version
1.x.
'-H'
The '-H' option causes 'as' to print every symbol which was changed
by case mapping.

File: as.info, Node: VAX-float, Next: VAX-directives, Prev: VAX-Opts, Up: Vax-Dependent
9.49.2 VAX Floating Point
-------------------------
Conversion of flonums to floating point is correct, and compatible with
previous assemblers. Rounding is towards zero if the remainder is
exactly half the least significant bit.
'D', 'F', 'G' and 'H' floating point formats are understood.
Immediate floating literals (_e.g._ 'S`$6.9') are rendered
correctly. Again, rounding is towards zero in the boundary case.
The '.float' directive produces 'f' format numbers. The '.double'
directive produces 'd' format numbers.

File: as.info, Node: VAX-directives, Next: VAX-opcodes, Prev: VAX-float, Up: Vax-Dependent
9.49.3 Vax Machine Directives
-----------------------------
The Vax version of the assembler supports four directives for generating
Vax floating point constants. They are described in the table below.
'.dfloat'
This expects zero or more flonums, separated by commas, and
assembles Vax 'd' format 64-bit floating point constants.
'.ffloat'
This expects zero or more flonums, separated by commas, and
assembles Vax 'f' format 32-bit floating point constants.
'.gfloat'
This expects zero or more flonums, separated by commas, and
assembles Vax 'g' format 64-bit floating point constants.
'.hfloat'
This expects zero or more flonums, separated by commas, and
assembles Vax 'h' format 128-bit floating point constants.

File: as.info, Node: VAX-opcodes, Next: VAX-branch, Prev: VAX-directives, Up: Vax-Dependent
9.49.4 VAX Opcodes
------------------
All DEC mnemonics are supported. Beware that 'case...' instructions
have exactly 3 operands. The dispatch table that follows the 'case...'
instruction should be made with '.word' statements. This is compatible
with all unix assemblers we know of.

File: as.info, Node: VAX-branch, Next: VAX-operands, Prev: VAX-opcodes, Up: Vax-Dependent
9.49.5 VAX Branch Improvement
-----------------------------
Certain pseudo opcodes are permitted. They are for branch instructions.
They expand to the shortest branch instruction that reaches the target.
Generally these mnemonics are made by substituting 'j' for 'b' at the
start of a DEC mnemonic. This feature is included both for
compatibility and to help compilers. If you do not need this feature,
avoid these opcodes. Here are the mnemonics, and the code they can
expand into.
'jbsb'
'Jsb' is already an instruction mnemonic, so we chose 'jbsb'.
(byte displacement)
'bsbb ...'
(word displacement)
'bsbw ...'
(long displacement)
'jsb ...'
'jbr'
'jr'
Unconditional branch.
(byte displacement)
'brb ...'
(word displacement)
'brw ...'
(long displacement)
'jmp ...'
'jCOND'
COND may be any one of the conditional branches 'neq', 'nequ',
'eql', 'eqlu', 'gtr', 'geq', 'lss', 'gtru', 'lequ', 'vc', 'vs',
'gequ', 'cc', 'lssu', 'cs'. COND may also be one of the bit tests
'bs', 'bc', 'bss', 'bcs', 'bsc', 'bcc', 'bssi', 'bcci', 'lbs',
'lbc'. NOTCOND is the opposite condition to COND.
(byte displacement)
'bCOND ...'
(word displacement)
'bNOTCOND foo ; brw ... ; foo:'
(long displacement)
'bNOTCOND foo ; jmp ... ; foo:'
'jacbX'
X may be one of 'b d f g h l w'.
(word displacement)
'OPCODE ...'
(long displacement)
OPCODE ..., foo ;
brb bar ;
foo: jmp ... ;
bar:
'jaobYYY'
YYY may be one of 'lss leq'.
'jsobZZZ'
ZZZ may be one of 'geq gtr'.
(byte displacement)
'OPCODE ...'
(word displacement)
OPCODE ..., foo ;
brb bar ;
foo: brw DESTINATION ;
bar:
(long displacement)
OPCODE ..., foo ;
brb bar ;
foo: jmp DESTINATION ;
bar:
'aobleq'
'aoblss'
'sobgeq'
'sobgtr'
(byte displacement)
'OPCODE ...'
(word displacement)
OPCODE ..., foo ;
brb bar ;
foo: brw DESTINATION ;
bar:
(long displacement)
OPCODE ..., foo ;
brb bar ;
foo: jmp DESTINATION ;
bar:

File: as.info, Node: VAX-operands, Next: VAX-no, Prev: VAX-branch, Up: Vax-Dependent
9.49.6 VAX Operands
-------------------
The immediate character is '$' for Unix compatibility, not '#' as DEC
writes it.
The indirect character is '*' for Unix compatibility, not '@' as DEC
writes it.
The displacement sizing character is '`' (an accent grave) for Unix
compatibility, not '^' as DEC writes it. The letter preceding '`' may
have either case. 'G' is not understood, but all other letters ('b i l
s w') are understood.
Register names understood are 'r0 r1 r2 ... r15 ap fp sp pc'. Upper
and lower case letters are equivalent.
For instance
tstb *w`$4(r5)
Any expression is permitted in an operand. Operands are comma
separated.

File: as.info, Node: VAX-no, Next: VAX-Syntax, Prev: VAX-operands, Up: Vax-Dependent
9.49.7 Not Supported on VAX
---------------------------
Vax bit fields can not be assembled with 'as'. Someone can add the
required code if they really need it.

File: as.info, Node: VAX-Syntax, Prev: VAX-no, Up: Vax-Dependent
9.49.8 VAX Syntax
-----------------
* Menu:
* VAX-Chars:: Special Characters

File: as.info, Node: VAX-Chars, Up: VAX-Syntax
9.49.8.1 Special Characters
...........................
The presence of a '#' appearing anywhere on a line indicates the start
of a comment that extends to the end of that line.
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line can also be a logical
line number directive (*note Comments::) or a preprocessor control
command (*note Preprocessing::).
The ';' character can be used to separate statements on the same
line.

File: as.info, Node: V850-Dependent, Next: XGATE-Dependent, Prev: Vax-Dependent, Up: Machine Dependencies
9.50 v850 Dependent Features
============================
* Menu:
* V850 Options:: Options
* V850 Syntax:: Syntax
* V850 Floating Point:: Floating Point
* V850 Directives:: V850 Machine Directives
* V850 Opcodes:: Opcodes

File: as.info, Node: V850 Options, Next: V850 Syntax, Up: V850-Dependent
9.50.1 Options
--------------
'as' supports the following additional command-line options for the V850
processor family:
'-wsigned_overflow'
Causes warnings to be produced when signed immediate values
overflow the space available for then within their opcodes. By
default this option is disabled as it is possible to receive
spurious warnings due to using exact bit patterns as immediate
constants.
'-wunsigned_overflow'
Causes warnings to be produced when unsigned immediate values
overflow the space available for then within their opcodes. By
default this option is disabled as it is possible to receive
spurious warnings due to using exact bit patterns as immediate
constants.
'-mv850'
Specifies that the assembled code should be marked as being
targeted at the V850 processor. This allows the linker to detect
attempts to link such code with code assembled for other
processors.
'-mv850e'
Specifies that the assembled code should be marked as being
targeted at the V850E processor. This allows the linker to detect
attempts to link such code with code assembled for other
processors.
'-mv850e1'
Specifies that the assembled code should be marked as being
targeted at the V850E1 processor. This allows the linker to detect
attempts to link such code with code assembled for other
processors.
'-mv850any'
Specifies that the assembled code should be marked as being
targeted at the V850 processor but support instructions that are
specific to the extended variants of the process. This allows the
production of binaries that contain target specific code, but which
are also intended to be used in a generic fashion. For example
libgcc.a contains generic routines used by the code produced by GCC
for all versions of the v850 architecture, together with support
routines only used by the V850E architecture.
'-mv850e2'
Specifies that the assembled code should be marked as being
targeted at the V850E2 processor. This allows the linker to detect
attempts to link such code with code assembled for other
processors.
'-mv850e2v3'
Specifies that the assembled code should be marked as being
targeted at the V850E2V3 processor. This allows the linker to
detect attempts to link such code with code assembled for other
processors.
'-mv850e2v4'
This is an alias for '-mv850e3v5'.
'-mv850e3v5'
Specifies that the assembled code should be marked as being
targeted at the V850E3V5 processor. This allows the linker to
detect attempts to link such code with code assembled for other
processors.
'-mrelax'
Enables relaxation. This allows the .longcall and .longjump pseudo
ops to be used in the assembler source code. These ops label
sections of code which are either a long function call or a long
branch. The assembler will then flag these sections of code and
the linker will attempt to relax them.
'-mgcc-abi'
Marks the generated objecy file as supporting the old GCC ABI.
'-mrh850-abi'
Marks the generated objecy file as supporting the RH850 ABI. This
is the default.
'-m8byte-align'
Marks the generated objecy file as supporting a maximum 64-bits of
alignment for variables defined in the source code.
'-m4byte-align'
Marks the generated objecy file as supporting a maximum 32-bits of
alignment for variables defined in the source code. This is the
default.

File: as.info, Node: V850 Syntax, Next: V850 Floating Point, Prev: V850 Options, Up: V850-Dependent
9.50.2 Syntax
-------------
* Menu:
* V850-Chars:: Special Characters
* V850-Regs:: Register Names

File: as.info, Node: V850-Chars, Next: V850-Regs, Up: V850 Syntax
9.50.2.1 Special Characters
...........................
'#' is the line comment character. If a '#' appears as the first
character of a line, the whole line is treated as a comment, but in this
case the line can also be a logical line number directive (*note
Comments::) or a preprocessor control command (*note Preprocessing::).
Two dashes ('--') can also be used to start a line comment.
The ';' character can be used to separate statements on the same
line.

File: as.info, Node: V850-Regs, Prev: V850-Chars, Up: V850 Syntax
9.50.2.2 Register Names
.......................
'as' supports the following names for registers:
'general register 0'
r0, zero
'general register 1'
r1
'general register 2'
r2, hp
'general register 3'
r3, sp
'general register 4'
r4, gp
'general register 5'
r5, tp
'general register 6'
r6
'general register 7'
r7
'general register 8'
r8
'general register 9'
r9
'general register 10'
r10
'general register 11'
r11
'general register 12'
r12
'general register 13'
r13
'general register 14'
r14
'general register 15'
r15
'general register 16'
r16
'general register 17'
r17
'general register 18'
r18
'general register 19'
r19
'general register 20'
r20
'general register 21'
r21
'general register 22'
r22
'general register 23'
r23
'general register 24'
r24
'general register 25'
r25
'general register 26'
r26
'general register 27'
r27
'general register 28'
r28
'general register 29'
r29
'general register 30'
r30, ep
'general register 31'
r31, lp
'system register 0'
eipc
'system register 1'
eipsw
'system register 2'
fepc
'system register 3'
fepsw
'system register 4'
ecr
'system register 5'
psw
'system register 16'
ctpc
'system register 17'
ctpsw
'system register 18'
dbpc
'system register 19'
dbpsw
'system register 20'
ctbp

File: as.info, Node: V850 Floating Point, Next: V850 Directives, Prev: V850 Syntax, Up: V850-Dependent
9.50.3 Floating Point
---------------------
The V850 family uses IEEE floating-point numbers.

File: as.info, Node: V850 Directives, Next: V850 Opcodes, Prev: V850 Floating Point, Up: V850-Dependent
9.50.4 V850 Machine Directives
------------------------------
'.offset <EXPRESSION>'
Moves the offset into the current section to the specified amount.
'.section "name", <type>'
This is an extension to the standard .section directive. It sets
the current section to be <type> and creates an alias for this
section called "name".
'.v850'
Specifies that the assembled code should be marked as being
targeted at the V850 processor. This allows the linker to detect
attempts to link such code with code assembled for other
processors.
'.v850e'
Specifies that the assembled code should be marked as being
targeted at the V850E processor. This allows the linker to detect
attempts to link such code with code assembled for other
processors.
'.v850e1'
Specifies that the assembled code should be marked as being
targeted at the V850E1 processor. This allows the linker to detect
attempts to link such code with code assembled for other
processors.
'.v850e2'
Specifies that the assembled code should be marked as being
targeted at the V850E2 processor. This allows the linker to detect
attempts to link such code with code assembled for other
processors.
'.v850e2v3'
Specifies that the assembled code should be marked as being
targeted at the V850E2V3 processor. This allows the linker to
detect attempts to link such code with code assembled for other
processors.
'.v850e2v4'
Specifies that the assembled code should be marked as being
targeted at the V850E3V5 processor. This allows the linker to
detect attempts to link such code with code assembled for other
processors.
'.v850e3v5'
Specifies that the assembled code should be marked as being
targeted at the V850E3V5 processor. This allows the linker to
detect attempts to link such code with code assembled for other
processors.

File: as.info, Node: V850 Opcodes, Prev: V850 Directives, Up: V850-Dependent
9.50.5 Opcodes
--------------
'as' implements all the standard V850 opcodes.
'as' also implements the following pseudo ops:
'hi0()'
Computes the higher 16 bits of the given expression and stores it
into the immediate operand field of the given instruction. For
example:
'mulhi hi0(here - there), r5, r6'
computes the difference between the address of labels 'here' and
'there', takes the upper 16 bits of this difference, shifts it down
16 bits and then multiplies it by the lower 16 bits in register 5,
putting the result into register 6.
'lo()'
Computes the lower 16 bits of the given expression and stores it
into the immediate operand field of the given instruction. For
example:
'addi lo(here - there), r5, r6'
computes the difference between the address of labels 'here' and
'there', takes the lower 16 bits of this difference and adds it to
register 5, putting the result into register 6.
'hi()'
Computes the higher 16 bits of the given expression and then adds
the value of the most significant bit of the lower 16 bits of the
expression and stores the result into the immediate operand field
of the given instruction. For example the following code can be
used to compute the address of the label 'here' and store it into
register 6:
'movhi hi(here), r0, r6' 'movea lo(here), r6, r6'
The reason for this special behaviour is that movea performs a sign
extension on its immediate operand. So for example if the address
of 'here' was 0xFFFFFFFF then without the special behaviour of the
hi() pseudo-op the movhi instruction would put 0xFFFF0000 into r6,
then the movea instruction would takes its immediate operand,
0xFFFF, sign extend it to 32 bits, 0xFFFFFFFF, and then add it into
r6 giving 0xFFFEFFFF which is wrong (the fifth nibble is E). With
the hi() pseudo op adding in the top bit of the lo() pseudo op, the
movhi instruction actually stores 0 into r6 (0xFFFF + 1 = 0x0000),
so that the movea instruction stores 0xFFFFFFFF into r6 - the right
value.
'hilo()'
Computes the 32 bit value of the given expression and stores it
into the immediate operand field of the given instruction (which
must be a mov instruction). For example:
'mov hilo(here), r6'
computes the absolute address of label 'here' and puts the result
into register 6.
'sdaoff()'
Computes the offset of the named variable from the start of the
Small Data Area (whoes address is held in register 4, the GP
register) and stores the result as a 16 bit signed value in the
immediate operand field of the given instruction. For example:
'ld.w sdaoff(_a_variable)[gp],r6'
loads the contents of the location pointed to by the label
'_a_variable' into register 6, provided that the label is located
somewhere within +/- 32K of the address held in the GP register.
[Note the linker assumes that the GP register contains a fixed
address set to the address of the label called '__gp'. This can
either be set up automatically by the linker, or specifically set
by using the '--defsym __gp=<value>' command line option].
'tdaoff()'
Computes the offset of the named variable from the start of the
Tiny Data Area (whoes address is held in register 30, the EP
register) and stores the result as a 4,5, 7 or 8 bit unsigned value
in the immediate operand field of the given instruction. For
example:
'sld.w tdaoff(_a_variable)[ep],r6'
loads the contents of the location pointed to by the label
'_a_variable' into register 6, provided that the label is located
somewhere within +256 bytes of the address held in the EP register.
[Note the linker assumes that the EP register contains a fixed
address set to the address of the label called '__ep'. This can
either be set up automatically by the linker, or specifically set
by using the '--defsym __ep=<value>' command line option].
'zdaoff()'
Computes the offset of the named variable from address 0 and stores
the result as a 16 bit signed value in the immediate operand field
of the given instruction. For example:
'movea zdaoff(_a_variable),zero,r6'
puts the address of the label '_a_variable' into register 6,
assuming that the label is somewhere within the first 32K of
memory. (Strictly speaking it also possible to access the last 32K
of memory as well, as the offsets are signed).
'ctoff()'
Computes the offset of the named variable from the start of the
Call Table Area (whoes address is helg in system register 20, the
CTBP register) and stores the result a 6 or 16 bit unsigned value
in the immediate field of then given instruction or piece of data.
For example:
'callt ctoff(table_func1)'
will put the call the function whoes address is held in the call
table at the location labeled 'table_func1'.
'.longcall name'
Indicates that the following sequence of instructions is a long
call to function 'name'. The linker will attempt to shorten this
call sequence if 'name' is within a 22bit offset of the call. Only
valid if the '-mrelax' command line switch has been enabled.
'.longjump name'
Indicates that the following sequence of instructions is a long
jump to label 'name'. The linker will attempt to shorten this code
sequence if 'name' is within a 22bit offset of the jump. Only
valid if the '-mrelax' command line switch has been enabled.
For information on the V850 instruction set, see 'V850 Family
32-/16-Bit single-Chip Microcontroller Architecture Manual' from NEC.
Ltd.

File: as.info, Node: XGATE-Dependent, Next: XSTORMY16-Dependent, Prev: V850-Dependent, Up: Machine Dependencies
9.51 XGATE Dependent Features
=============================
* Menu:
* XGATE-Opts:: XGATE Options
* XGATE-Syntax:: Syntax
* XGATE-Directives:: Assembler Directives
* XGATE-Float:: Floating Point
* XGATE-opcodes:: Opcodes

File: as.info, Node: XGATE-Opts, Next: XGATE-Syntax, Up: XGATE-Dependent
9.51.1 XGATE Options
--------------------
The Freescale XGATE version of 'as' has a few machine dependent options.
'-mshort'
This option controls the ABI and indicates to use a 16-bit integer
ABI. It has no effect on the assembled instructions. This is the
default.
'-mlong'
This option controls the ABI and indicates to use a 32-bit integer
ABI.
'-mshort-double'
This option controls the ABI and indicates to use a 32-bit float
ABI. This is the default.
'-mlong-double'
This option controls the ABI and indicates to use a 64-bit float
ABI.
'--print-insn-syntax'
You can use the '--print-insn-syntax' option to obtain the syntax
description of the instruction when an error is detected.
'--print-opcodes'
The '--print-opcodes' option prints the list of all the
instructions with their syntax. Once the list is printed 'as'
exits.

File: as.info, Node: XGATE-Syntax, Next: XGATE-Directives, Prev: XGATE-Opts, Up: XGATE-Dependent
9.51.2 Syntax
-------------
In XGATE RISC syntax, the instruction name comes first and it may be
followed by up to three operands. Operands are separated by commas
(','). 'as' will complain if too many operands are specified for a
given instruction. The same will happen if you specified too few
operands.
nop
ldl #23
CMP R1, R2
The presence of a ';' character or a '!' character anywhere on a line
indicates the start of a comment that extends to the end of that line.
A '*' or a '#' character at the start of a line also introduces a
line comment, but these characters do not work elsewhere on the line.
If the first character of the line is a '#' then as well as starting a
comment, the line could also be logical line number directive (*note
Comments::) or a preprocessor control command (*note Preprocessing::).
The XGATE assembler does not currently support a line separator
character.
The following addressing modes are understood for XGATE:
"Inherent"
''
"Immediate 3 Bit Wide"
'#NUMBER'
"Immediate 4 Bit Wide"
'#NUMBER'
"Immediate 8 Bit Wide"
'#NUMBER'
"Monadic Addressing"
'REG'
"Dyadic Addressing"
'REG, REG'
"Triadic Addressing"
'REG, REG, REG'
"Relative Addressing 9 Bit Wide"
'*SYMBOL'
"Relative Addressing 10 Bit Wide"
'*SYMBOL'
"Index Register plus Immediate Offset"
'REG, (REG, #NUMBER)'
"Index Register plus Register Offset"
'REG, REG, REG'
"Index Register plus Register Offset with Post-increment"
'REG, REG, REG+'
"Index Register plus Register Offset with Pre-decrement"
'REG, REG, -REG'
The register can be either 'R0', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6'
or 'R7'.
Convience macro opcodes to deal with 16-bit values have been added.
"Immediate 16 Bit Wide"
'#NUMBER', or '*SYMBOL'
For example:
ldw R1, #1024
ldw R3, timer
ldw R1, (R1, #0)
COM R1
stw R2, (R1, #0)

File: as.info, Node: XGATE-Directives, Next: XGATE-Float, Prev: XGATE-Syntax, Up: XGATE-Dependent
9.51.3 Assembler Directives
---------------------------
The XGATE version of 'as' have the following specific assembler
directives:

File: as.info, Node: XGATE-Float, Next: XGATE-opcodes, Prev: XGATE-Directives, Up: XGATE-Dependent
9.51.4 Floating Point
---------------------
Packed decimal (P) format floating literals are not supported(yet).
The floating point formats generated by directives are these.
'.float'
'Single' precision floating point constants.
'.double'
'Double' precision floating point constants.
'.extend'
'.ldouble'
'Extended' precision ('long double') floating point constants.

File: as.info, Node: XGATE-opcodes, Prev: XGATE-Float, Up: XGATE-Dependent
9.51.5 Opcodes
--------------

File: as.info, Node: XSTORMY16-Dependent, Next: Xtensa-Dependent, Prev: XGATE-Dependent, Up: Machine Dependencies
9.52 XStormy16 Dependent Features
=================================
* Menu:
* XStormy16 Syntax:: Syntax
* XStormy16 Directives:: Machine Directives
* XStormy16 Opcodes:: Pseudo-Opcodes

File: as.info, Node: XStormy16 Syntax, Next: XStormy16 Directives, Up: XSTORMY16-Dependent
9.52.1 Syntax
-------------
* Menu:
* XStormy16-Chars:: Special Characters

File: as.info, Node: XStormy16-Chars, Up: XStormy16 Syntax
9.52.1.1 Special Characters
...........................
'#' is the line comment character. If a '#' appears as the first
character of a line, the whole line is treated as a comment, but in this
case the line can also be a logical line number directive (*note
Comments::) or a preprocessor control command (*note Preprocessing::).
A semicolon (';') can be used to start a comment that extends from
wherever the character appears on the line up to the end of the line.
The '|' character can be used to separate statements on the same
line.

File: as.info, Node: XStormy16 Directives, Next: XStormy16 Opcodes, Prev: XStormy16 Syntax, Up: XSTORMY16-Dependent
9.52.2 XStormy16 Machine Directives
-----------------------------------
'.16bit_pointers'
Like the '--16bit-pointers' command line option this directive
indicates that the assembly code makes use of 16-bit pointers.
'.32bit_pointers'
Like the '--32bit-pointers' command line option this directive
indicates that the assembly code makes use of 32-bit pointers.
'.no_pointers'
Like the '--no-pointers' command line option this directive
indicates that the assembly code does not makes use pointers.

File: as.info, Node: XStormy16 Opcodes, Prev: XStormy16 Directives, Up: XSTORMY16-Dependent
9.52.3 XStormy16 Pseudo-Opcodes
-------------------------------
'as' implements all the standard XStormy16 opcodes.
'as' also implements the following pseudo ops:
'@lo()'
Computes the lower 16 bits of the given expression and stores it
into the immediate operand field of the given instruction. For
example:
'add r6, @lo(here - there)'
computes the difference between the address of labels 'here' and
'there', takes the lower 16 bits of this difference and adds it to
register 6.
'@hi()'
Computes the higher 16 bits of the given expression and stores it
into the immediate operand field of the given instruction. For
example:
'addc r7, @hi(here - there)'
computes the difference between the address of labels 'here' and
'there', takes the upper 16 bits of this difference, shifts it down
16 bits and then adds it, along with the carry bit, to the value in
register 7.

File: as.info, Node: Xtensa-Dependent, Next: Z80-Dependent, Prev: XSTORMY16-Dependent, Up: Machine Dependencies
9.53 Xtensa Dependent Features
==============================
This chapter covers features of the GNU assembler that are specific to
the Xtensa architecture. For details about the Xtensa instruction set,
please consult the 'Xtensa Instruction Set Architecture (ISA) Reference
Manual'.
* Menu:
* Xtensa Options:: Command-line Options.
* Xtensa Syntax:: Assembler Syntax for Xtensa Processors.
* Xtensa Optimizations:: Assembler Optimizations.
* Xtensa Relaxation:: Other Automatic Transformations.
* Xtensa Directives:: Directives for Xtensa Processors.

File: as.info, Node: Xtensa Options, Next: Xtensa Syntax, Up: Xtensa-Dependent
9.53.1 Command Line Options
---------------------------
'--text-section-literals | --no-text-section-literals'
Control the treatment of literal pools. The default is
'--no-text-section-literals', which places literals in separate
sections in the output file. This allows the literal pool to be
placed in a data RAM/ROM. With '--text-section-literals', the
literals are interspersed in the text section in order to keep them
as close as possible to their references. This may be necessary
for large assembly files, where the literals would otherwise be out
of range of the 'L32R' instructions in the text section. These
options only affect literals referenced via PC-relative 'L32R'
instructions; literals for absolute mode 'L32R' instructions are
handled separately. *Note literal: Literal Directive.
'--absolute-literals | --no-absolute-literals'
Indicate to the assembler whether 'L32R' instructions use absolute
or PC-relative addressing. If the processor includes the absolute
addressing option, the default is to use absolute 'L32R'
relocations. Otherwise, only the PC-relative 'L32R' relocations
can be used.
'--target-align | --no-target-align'
Enable or disable automatic alignment to reduce branch penalties at
some expense in code size. *Note Automatic Instruction Alignment:
Xtensa Automatic Alignment. This optimization is enabled by
default. Note that the assembler will always align instructions
like 'LOOP' that have fixed alignment requirements.
'--longcalls | --no-longcalls'
Enable or disable transformation of call instructions to allow
calls across a greater range of addresses. *Note Function Call
Relaxation: Xtensa Call Relaxation. This option should be used
when call targets can potentially be out of range. It may degrade
both code size and performance, but the linker can generally
optimize away the unnecessary overhead when a call ends up within
range. The default is '--no-longcalls'.
'--transform | --no-transform'
Enable or disable all assembler transformations of Xtensa
instructions, including both relaxation and optimization. The
default is '--transform'; '--no-transform' should only be used in
the rare cases when the instructions must be exactly as specified
in the assembly source. Using '--no-transform' causes out of range
instruction operands to be errors.
'--rename-section OLDNAME=NEWNAME'
Rename the OLDNAME section to NEWNAME. This option can be used
multiple times to rename multiple sections.
'--trampolines | --no-trampolines'
Enable or disable transformation of jump instructions to allow
jumps across a greater range of addresses. *Note Jump Trampolines:
Xtensa Jump Relaxation. This option should be used when jump
targets can potentially be out of range. In the absence of such
jumps this option does not affect code size or performance. The
default is '--trampolines'.

File: as.info, Node: Xtensa Syntax, Next: Xtensa Optimizations, Prev: Xtensa Options, Up: Xtensa-Dependent
9.53.2 Assembler Syntax
-----------------------
Block comments are delimited by '/*' and '*/'. End of line comments may
be introduced with either '#' or '//'.
If a '#' appears as the first character of a line then the whole line
is treated as a comment, but in this case the line could also be a
logical line number directive (*note Comments::) or a preprocessor
control command (*note Preprocessing::).
Instructions consist of a leading opcode or macro name followed by
whitespace and an optional comma-separated list of operands:
OPCODE [OPERAND, ...]
Instructions must be separated by a newline or semicolon (';').
FLIX instructions, which bundle multiple opcodes together in a single
instruction, are specified by enclosing the bundled opcodes inside
braces:
{
[FORMAT]
OPCODE0 [OPERANDS]
OPCODE1 [OPERANDS]
OPCODE2 [OPERANDS]
...
}
The opcodes in a FLIX instruction are listed in the same order as the
corresponding instruction slots in the TIE format declaration.
Directives and labels are not allowed inside the braces of a FLIX
instruction. A particular TIE format name can optionally be specified
immediately after the opening brace, but this is usually unnecessary.
The assembler will automatically search for a format that can encode the
specified opcodes, so the format name need only be specified in rare
cases where there is more than one applicable format and where it
matters which of those formats is used. A FLIX instruction can also be
specified on a single line by separating the opcodes with semicolons:
{ [FORMAT;] OPCODE0 [OPERANDS]; OPCODE1 [OPERANDS]; OPCODE2 [OPERANDS]; ... }
If an opcode can only be encoded in a FLIX instruction but is not
specified as part of a FLIX bundle, the assembler will choose the
smallest format where the opcode can be encoded and will fill unused
instruction slots with no-ops.
* Menu:
* Xtensa Opcodes:: Opcode Naming Conventions.
* Xtensa Registers:: Register Naming.

File: as.info, Node: Xtensa Opcodes, Next: Xtensa Registers, Up: Xtensa Syntax
9.53.2.1 Opcode Names
.....................
See the 'Xtensa Instruction Set Architecture (ISA) Reference Manual' for
a complete list of opcodes and descriptions of their semantics.
If an opcode name is prefixed with an underscore character ('_'),
'as' will not transform that instruction in any way. The underscore
prefix disables both optimization (*note Xtensa Optimizations: Xtensa
Optimizations.) and relaxation (*note Xtensa Relaxation: Xtensa
Relaxation.) for that particular instruction. Only use the underscore
prefix when it is essential to select the exact opcode produced by the
assembler. Using this feature unnecessarily makes the code less
efficient by disabling assembler optimization and less flexible by
disabling relaxation.
Note that this special handling of underscore prefixes only applies
to Xtensa opcodes, not to either built-in macros or user-defined macros.
When an underscore prefix is used with a macro (e.g., '_MOV'), it refers
to a different macro. The assembler generally provides built-in macros
both with and without the underscore prefix, where the underscore
versions behave as if the underscore carries through to the instructions
in the macros. For example, '_MOV' may expand to '_MOV.N'.
The underscore prefix only applies to individual instructions, not to
series of instructions. For example, if a series of instructions have
underscore prefixes, the assembler will not transform the individual
instructions, but it may insert other instructions between them (e.g.,
to align a 'LOOP' instruction). To prevent the assembler from modifying
a series of instructions as a whole, use the 'no-transform' directive.
*Note transform: Transform Directive.

File: as.info, Node: Xtensa Registers, Prev: Xtensa Opcodes, Up: Xtensa Syntax
9.53.2.2 Register Names
.......................
The assembly syntax for a register file entry is the "short" name for a
TIE register file followed by the index into that register file. For
example, the general-purpose 'AR' register file has a short name of 'a',
so these registers are named 'a0'...'a15'. As a special feature, 'sp'
is also supported as a synonym for 'a1'. Additional registers may be
added by processor configuration options and by designer-defined TIE
extensions. An initial '$' character is optional in all register names.

File: as.info, Node: Xtensa Optimizations, Next: Xtensa Relaxation, Prev: Xtensa Syntax, Up: Xtensa-Dependent
9.53.3 Xtensa Optimizations
---------------------------
The optimizations currently supported by 'as' are generation of density
instructions where appropriate and automatic branch target alignment.
* Menu:
* Density Instructions:: Using Density Instructions.
* Xtensa Automatic Alignment:: Automatic Instruction Alignment.

File: as.info, Node: Density Instructions, Next: Xtensa Automatic Alignment, Up: Xtensa Optimizations
9.53.3.1 Using Density Instructions
...................................
The Xtensa instruction set has a code density option that provides
16-bit versions of some of the most commonly used opcodes. Use of these
opcodes can significantly reduce code size. When possible, the
assembler automatically translates instructions from the core Xtensa
instruction set into equivalent instructions from the Xtensa code
density option. This translation can be disabled by using underscore
prefixes (*note Opcode Names: Xtensa Opcodes.), by using the
'--no-transform' command-line option (*note Command Line Options: Xtensa
Options.), or by using the 'no-transform' directive (*note transform:
Transform Directive.).
It is a good idea _not_ to use the density instructions directly.
The assembler will automatically select dense instructions where
possible. If you later need to use an Xtensa processor without the code
density option, the same assembly code will then work without
modification.

File: as.info, Node: Xtensa Automatic Alignment, Prev: Density Instructions, Up: Xtensa Optimizations
9.53.3.2 Automatic Instruction Alignment
........................................
The Xtensa assembler will automatically align certain instructions, both
to optimize performance and to satisfy architectural requirements.
As an optimization to improve performance, the assembler attempts to
align branch targets so they do not cross instruction fetch boundaries.
(Xtensa processors can be configured with either 32-bit or 64-bit
instruction fetch widths.) An instruction immediately following a call
is treated as a branch target in this context, because it will be the
target of a return from the call. This alignment has the potential to
reduce branch penalties at some expense in code size. This optimization
is enabled by default. You can disable it with the '--no-target-align'
command-line option (*note Command Line Options: Xtensa Options.).
The target alignment optimization is done without adding instructions
that could increase the execution time of the program. If there are
density instructions in the code preceding a target, the assembler can
change the target alignment by widening some of those instructions to
the equivalent 24-bit instructions. Extra bytes of padding can be
inserted immediately following unconditional jump and return
instructions. This approach is usually successful in aligning many, but
not all, branch targets.
The 'LOOP' family of instructions must be aligned such that the first
instruction in the loop body does not cross an instruction fetch
boundary (e.g., with a 32-bit fetch width, a 'LOOP' instruction must be
on either a 1 or 2 mod 4 byte boundary). The assembler knows about this
restriction and inserts the minimal number of 2 or 3 byte no-op
instructions to satisfy it. When no-op instructions are added, any
label immediately preceding the original loop will be moved in order to
refer to the loop instruction, not the newly generated no-op
instruction. To preserve binary compatibility across processors with
different fetch widths, the assembler conservatively assumes a 32-bit
fetch width when aligning 'LOOP' instructions (except if the first
instruction in the loop is a 64-bit instruction).
Previous versions of the assembler automatically aligned 'ENTRY'
instructions to 4-byte boundaries, but that alignment is now the
programmer's responsibility.

File: as.info, Node: Xtensa Relaxation, Next: Xtensa Directives, Prev: Xtensa Optimizations, Up: Xtensa-Dependent
9.53.4 Xtensa Relaxation
------------------------
When an instruction operand is outside the range allowed for that
particular instruction field, 'as' can transform the code to use a
functionally-equivalent instruction or sequence of instructions. This
process is known as "relaxation". This is typically done for branch
instructions because the distance of the branch targets is not known
until assembly-time. The Xtensa assembler offers branch relaxation and
also extends this concept to function calls, 'MOVI' instructions and
other instructions with immediate fields.
* Menu:
* Xtensa Branch Relaxation:: Relaxation of Branches.
* Xtensa Call Relaxation:: Relaxation of Function Calls.
* Xtensa Jump Relaxation:: Relaxation of Jumps.
* Xtensa Immediate Relaxation:: Relaxation of other Immediate Fields.

File: as.info, Node: Xtensa Branch Relaxation, Next: Xtensa Call Relaxation, Up: Xtensa Relaxation
9.53.4.1 Conditional Branch Relaxation
......................................
When the target of a branch is too far away from the branch itself,
i.e., when the offset from the branch to the target is too large to fit
in the immediate field of the branch instruction, it may be necessary to
replace the branch with a branch around a jump. For example,
beqz a2, L
may result in:
bnez.n a2, M
j L
M:
(The 'BNEZ.N' instruction would be used in this example only if the
density option is available. Otherwise, 'BNEZ' would be used.)
This relaxation works well because the unconditional jump instruction
has a much larger offset range than the various conditional branches.
However, an error will occur if a branch target is beyond the range of a
jump instruction. 'as' cannot relax unconditional jumps. Similarly, an
error will occur if the original input contains an unconditional jump to
a target that is out of range.
Branch relaxation is enabled by default. It can be disabled by using
underscore prefixes (*note Opcode Names: Xtensa Opcodes.), the
'--no-transform' command-line option (*note Command Line Options: Xtensa
Options.), or the 'no-transform' directive (*note transform: Transform
Directive.).

File: as.info, Node: Xtensa Call Relaxation, Next: Xtensa Jump Relaxation, Prev: Xtensa Branch Relaxation, Up: Xtensa Relaxation
9.53.4.2 Function Call Relaxation
.................................
Function calls may require relaxation because the Xtensa immediate call
instructions ('CALL0', 'CALL4', 'CALL8' and 'CALL12') provide a
PC-relative offset of only 512 Kbytes in either direction. For larger
programs, it may be necessary to use indirect calls ('CALLX0', 'CALLX4',
'CALLX8' and 'CALLX12') where the target address is specified in a
register. The Xtensa assembler can automatically relax immediate call
instructions into indirect call instructions. This relaxation is done
by loading the address of the called function into the callee's return
address register and then using a 'CALLX' instruction. So, for example:
call8 func
might be relaxed to:
.literal .L1, func
l32r a8, .L1
callx8 a8
Because the addresses of targets of function calls are not generally
known until link-time, the assembler must assume the worst and relax all
the calls to functions in other source files, not just those that really
will be out of range. The linker can recognize calls that were
unnecessarily relaxed, and it will remove the overhead introduced by the
assembler for those cases where direct calls are sufficient.
Call relaxation is disabled by default because it can have a negative
effect on both code size and performance, although the linker can
usually eliminate the unnecessary overhead. If a program is too large
and some of the calls are out of range, function call relaxation can be
enabled using the '--longcalls' command-line option or the 'longcalls'
directive (*note longcalls: Longcalls Directive.).

File: as.info, Node: Xtensa Jump Relaxation, Next: Xtensa Immediate Relaxation, Prev: Xtensa Call Relaxation, Up: Xtensa Relaxation
9.53.4.3 Jump Relaxation
........................
Jump instruction may require relaxation because the Xtensa jump
instruction ('J') provide a PC-relative offset of only 128 Kbytes in
either direction. One option is to use jump long ('J.L') instruction,
which depending on jump distance may be assembled as jump ('J') or
indirect jump ('JX'). However it needs a free register. When there's
no spare register it is possible to plant intermediate jump sites
(trampolines) between the jump instruction and its target. These sites
may be located in areas unreachable by normal code execution flow, in
that case they only contain intermediate jumps, or they may be inserted
in the middle of code block, in which case there's an additional jump
from the beginning of the trampoline to the instruction past its end.
So, for example:
j 1f
...
retw
...
mov a10, a2
call8 func
...
1:
...
might be relaxed to:
j .L0_TR_1
...
retw
.L0_TR_1:
j 1f
...
mov a10, a2
call8 func
...
1:
...
or to:
j .L0_TR_1
...
retw
...
mov a10, a2
j .L0_TR_0
.L0_TR_1:
j 1f
.L0_TR_0:
call8 func
...
1:
...
The Xtensa assempler uses trampolines with jump around only when it
cannot find suitable unreachable trampoline. There may be multiple
trampolines between the jump instruction and its target.
This relaxation does not apply to jumps to undefined symbols,
assuming they will reach their targets once resolved.
Jump relaxation is enabled by default because it does not affect code
size or performance while the code itself is small. This relaxation may
be disabled completely with '--no-trampolines' or '--no-transform'
command-line options (*note Command Line Options: Xtensa Options.).

File: as.info, Node: Xtensa Immediate Relaxation, Prev: Xtensa Jump Relaxation, Up: Xtensa Relaxation
9.53.4.4 Other Immediate Field Relaxation
.........................................
The assembler normally performs the following other relaxations. They
can be disabled by using underscore prefixes (*note Opcode Names: Xtensa
Opcodes.), the '--no-transform' command-line option (*note Command Line
Options: Xtensa Options.), or the 'no-transform' directive (*note
transform: Transform Directive.).
The 'MOVI' machine instruction can only materialize values in the
range from -2048 to 2047. Values outside this range are best
materialized with 'L32R' instructions. Thus:
movi a0, 100000
is assembled into the following machine code:
.literal .L1, 100000
l32r a0, .L1
The 'L8UI' machine instruction can only be used with immediate
offsets in the range from 0 to 255. The 'L16SI' and 'L16UI' machine
instructions can only be used with offsets from 0 to 510. The 'L32I'
machine instruction can only be used with offsets from 0 to 1020. A
load offset outside these ranges can be materialized with an 'L32R'
instruction if the destination register of the load is different than
the source address register. For example:
l32i a1, a0, 2040
is translated to:
.literal .L1, 2040
l32r a1, .L1
add a1, a0, a1
l32i a1, a1, 0
If the load destination and source address register are the same, an
out-of-range offset causes an error.
The Xtensa 'ADDI' instruction only allows immediate operands in the
range from -128 to 127. There are a number of alternate instruction
sequences for the 'ADDI' operation. First, if the immediate is 0, the
'ADDI' will be turned into a 'MOV.N' instruction (or the equivalent 'OR'
instruction if the code density option is not available). If the 'ADDI'
immediate is outside of the range -128 to 127, but inside the range
-32896 to 32639, an 'ADDMI' instruction or 'ADDMI'/'ADDI' sequence will
be used. Finally, if the immediate is outside of this range and a free
register is available, an 'L32R'/'ADD' sequence will be used with a
literal allocated from the literal pool.
For example:
addi a5, a6, 0
addi a5, a6, 512
addi a5, a6, 513
addi a5, a6, 50000
is assembled into the following:
.literal .L1, 50000
mov.n a5, a6
addmi a5, a6, 0x200
addmi a5, a6, 0x200
addi a5, a5, 1
l32r a5, .L1
add a5, a6, a5

File: as.info, Node: Xtensa Directives, Prev: Xtensa Relaxation, Up: Xtensa-Dependent
9.53.5 Directives
-----------------
The Xtensa assembler supports a region-based directive syntax:
.begin DIRECTIVE [OPTIONS]
...
.end DIRECTIVE
All the Xtensa-specific directives that apply to a region of code use
this syntax.
The directive applies to code between the '.begin' and the '.end'.
The state of the option after the '.end' reverts to what it was before
the '.begin'. A nested '.begin'/'.end' region can further change the
state of the directive without having to be aware of its outer state.
For example, consider:
.begin no-transform
L: add a0, a1, a2
.begin transform
M: add a0, a1, a2
.end transform
N: add a0, a1, a2
.end no-transform
The 'ADD' opcodes at 'L' and 'N' in the outer 'no-transform' region
both result in 'ADD' machine instructions, but the assembler selects an
'ADD.N' instruction for the 'ADD' at 'M' in the inner 'transform'
region.
The advantage of this style is that it works well inside macros which
can preserve the context of their callers.
The following directives are available:
* Menu:
* Schedule Directive:: Enable instruction scheduling.
* Longcalls Directive:: Use Indirect Calls for Greater Range.
* Transform Directive:: Disable All Assembler Transformations.
* Literal Directive:: Intermix Literals with Instructions.
* Literal Position Directive:: Specify Inline Literal Pool Locations.
* Literal Prefix Directive:: Specify Literal Section Name Prefix.
* Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.

File: as.info, Node: Schedule Directive, Next: Longcalls Directive, Up: Xtensa Directives
9.53.5.1 schedule
.................
The 'schedule' directive is recognized only for compatibility with
Tensilica's assembler.
.begin [no-]schedule
.end [no-]schedule
This directive is ignored and has no effect on 'as'.

File: as.info, Node: Longcalls Directive, Next: Transform Directive, Prev: Schedule Directive, Up: Xtensa Directives
9.53.5.2 longcalls
..................
The 'longcalls' directive enables or disables function call relaxation.
*Note Function Call Relaxation: Xtensa Call Relaxation.
.begin [no-]longcalls
.end [no-]longcalls
Call relaxation is disabled by default unless the '--longcalls'
command-line option is specified. The 'longcalls' directive overrides
the default determined by the command-line options.

File: as.info, Node: Transform Directive, Next: Literal Directive, Prev: Longcalls Directive, Up: Xtensa Directives
9.53.5.3 transform
..................
This directive enables or disables all assembler transformation,
including relaxation (*note Xtensa Relaxation: Xtensa Relaxation.) and
optimization (*note Xtensa Optimizations: Xtensa Optimizations.).
.begin [no-]transform
.end [no-]transform
Transformations are enabled by default unless the '--no-transform'
option is used. The 'transform' directive overrides the default
determined by the command-line options. An underscore opcode prefix,
disabling transformation of that opcode, always takes precedence over
both directives and command-line flags.

File: as.info, Node: Literal Directive, Next: Literal Position Directive, Prev: Transform Directive, Up: Xtensa Directives
9.53.5.4 literal
................
The '.literal' directive is used to define literal pool data, i.e.,
read-only 32-bit data accessed via 'L32R' instructions.
.literal LABEL, VALUE[, VALUE...]
This directive is similar to the standard '.word' directive, except
that the actual location of the literal data is determined by the
assembler and linker, not by the position of the '.literal' directive.
Using this directive gives the assembler freedom to locate the literal
data in the most appropriate place and possibly to combine identical
literals. For example, the code:
entry sp, 40
.literal .L1, sym
l32r a4, .L1
can be used to load a pointer to the symbol 'sym' into register 'a4'.
The value of 'sym' will not be placed between the 'ENTRY' and 'L32R'
instructions; instead, the assembler puts the data in a literal pool.
Literal pools are placed by default in separate literal sections;
however, when using the '--text-section-literals' option (*note Command
Line Options: Xtensa Options.), the literal pools for PC-relative mode
'L32R' instructions are placed in the current section.(1) These text
section literal pools are created automatically before 'ENTRY'
instructions and manually after '.literal_position' directives (*note
literal_position: Literal Position Directive.). If there are no
preceding 'ENTRY' instructions, explicit '.literal_position' directives
must be used to place the text section literal pools; otherwise, 'as'
will report an error.
When literals are placed in separate sections, the literal section
names are derived from the names of the sections where the literals are
defined. The base literal section names are '.literal' for PC-relative
mode 'L32R' instructions and '.lit4' for absolute mode 'L32R'
instructions (*note absolute-literals: Absolute Literals Directive.).
These base names are used for literals defined in the default '.text'
section. For literals defined in other sections or within the scope of
a 'literal_prefix' directive (*note literal_prefix: Literal Prefix
Directive.), the following rules determine the literal section name:
1. If the current section is a member of a section group, the literal
section name includes the group name as a suffix to the base
'.literal' or '.lit4' name, with a period to separate the base name
and group name. The literal section is also made a member of the
group.
2. If the current section name (or 'literal_prefix' value) begins with
"'.gnu.linkonce.KIND.'", the literal section name is formed by
replacing "'.KIND'" with the base '.literal' or '.lit4' name. For
example, for literals defined in a section named
'.gnu.linkonce.t.func', the literal section will be
'.gnu.linkonce.literal.func' or '.gnu.linkonce.lit4.func'.
3. If the current section name (or 'literal_prefix' value) ends with
'.text', the literal section name is formed by replacing that
suffix with the base '.literal' or '.lit4' name. For example, for
literals defined in a section named '.iram0.text', the literal
section will be '.iram0.literal' or '.iram0.lit4'.
4. If none of the preceding conditions apply, the literal section name
is formed by adding the base '.literal' or '.lit4' name as a suffix
to the current section name (or 'literal_prefix' value).
---------- Footnotes ----------
(1) Literals for the '.init' and '.fini' sections are always placed
in separate sections, even when '--text-section-literals' is enabled.

File: as.info, Node: Literal Position Directive, Next: Literal Prefix Directive, Prev: Literal Directive, Up: Xtensa Directives
9.53.5.5 literal_position
.........................
When using '--text-section-literals' to place literals inline in the
section being assembled, the '.literal_position' directive can be used
to mark a potential location for a literal pool.
.literal_position
The '.literal_position' directive is ignored when the
'--text-section-literals' option is not used or when 'L32R' instructions
use the absolute addressing mode.
The assembler will automatically place text section literal pools
before 'ENTRY' instructions, so the '.literal_position' directive is
only needed to specify some other location for a literal pool. You may
need to add an explicit jump instruction to skip over an inline literal
pool.
For example, an interrupt vector does not begin with an 'ENTRY'
instruction so the assembler will be unable to automatically find a good
place to put a literal pool. Moreover, the code for the interrupt
vector must be at a specific starting address, so the literal pool
cannot come before the start of the code. The literal pool for the
vector must be explicitly positioned in the middle of the vector (before
any uses of the literals, due to the negative offsets used by
PC-relative 'L32R' instructions). The '.literal_position' directive can
be used to do this. In the following code, the literal for 'M' will
automatically be aligned correctly and is placed after the unconditional
jump.
.global M
code_start:
j continue
.literal_position
.align 4
continue:
movi a4, M

File: as.info, Node: Literal Prefix Directive, Next: Absolute Literals Directive, Prev: Literal Position Directive, Up: Xtensa Directives
9.53.5.6 literal_prefix
.......................
The 'literal_prefix' directive allows you to override the default
literal section names, which are derived from the names of the sections
where the literals are defined.
.begin literal_prefix [NAME]
.end literal_prefix
For literals defined within the delimited region, the literal section
names are derived from the NAME argument instead of the name of the
current section. The rules used to derive the literal section names do
not change. *Note literal: Literal Directive. If the NAME argument is
omitted, the literal sections revert to the defaults. This directive
has no effect when using the '--text-section-literals' option (*note
Command Line Options: Xtensa Options.).

File: as.info, Node: Absolute Literals Directive, Prev: Literal Prefix Directive, Up: Xtensa Directives
9.53.5.7 absolute-literals
..........................
The 'absolute-literals' and 'no-absolute-literals' directives control
the absolute vs. PC-relative mode for 'L32R' instructions. These are
relevant only for Xtensa configurations that include the absolute
addressing option for 'L32R' instructions.
.begin [no-]absolute-literals
.end [no-]absolute-literals
These directives do not change the 'L32R' mode--they only cause the
assembler to emit the appropriate kind of relocation for 'L32R'
instructions and to place the literal values in the appropriate section.
To change the 'L32R' mode, the program must write the 'LITBASE' special
register. It is the programmer's responsibility to keep track of the
mode and indicate to the assembler which mode is used in each region of
code.
If the Xtensa configuration includes the absolute 'L32R' addressing
option, the default is to assume absolute 'L32R' addressing unless the
'--no-absolute-literals' command-line option is specified. Otherwise,
the default is to assume PC-relative 'L32R' addressing. The
'absolute-literals' directive can then be used to override the default
determined by the command-line options.

File: as.info, Node: Reporting Bugs, Next: Acknowledgements, Prev: Machine Dependencies, Up: Top
10 Reporting Bugs
*****************
Your bug reports play an essential role in making 'as' reliable.
Reporting a bug may help you by bringing a solution to your problem,
or it may not. But in any case the principal function of a bug report
is to help the entire community by making the next version of 'as' work
better. Bug reports are your contribution to the maintenance of 'as'.
In order for a bug report to serve its purpose, you must include the
information that enables us to fix the bug.
* Menu:
* Bug Criteria:: Have you found a bug?
* Bug Reporting:: How to report bugs

File: as.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs
10.1 Have You Found a Bug?
==========================
If you are not sure whether you have found a bug, here are some
guidelines:
* If the assembler gets a fatal signal, for any input whatever, that
is a 'as' bug. Reliable assemblers never crash.
* If 'as' produces an error message for valid input, that is a bug.
* If 'as' does not produce an error message for invalid input, that
is a bug. However, you should note that your idea of "invalid
input" might be our idea of "an extension" or "support for
traditional practice".
* If you are an experienced user of assemblers, your suggestions for
improvement of 'as' are welcome in any case.

File: as.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs
10.2 How to Report Bugs
=======================
A number of companies and individuals offer support for GNU products.
If you obtained 'as' from a support organization, we recommend you
contact that organization first.
You can find contact information for many support companies and
individuals in the file 'etc/SERVICE' in the GNU Emacs distribution.
In any event, we also recommend that you send bug reports for 'as' to
<http://www.sourceware.org/bugzilla/>.
The fundamental principle of reporting bugs usefully is this: *report
all the facts*. If you are not sure whether to state a fact or leave it
out, state it!
Often people omit facts because they think they know what causes the
problem and assume that some details do not matter. Thus, you might
assume that the name of a symbol you use in an example does not matter.
Well, probably it does not, but one cannot be sure. Perhaps the bug is
a stray memory reference which happens to fetch from the location where
that name is stored in memory; perhaps, if the name were different, the
contents of that location would fool the assembler into doing the right
thing despite the bug. Play it safe and give a specific, complete
example. That is the easiest thing for you to do, and the most helpful.
Keep in mind that the purpose of a bug report is to enable us to fix
the bug if it is new to us. Therefore, always write your bug reports on
the assumption that the bug has not been reported previously.
Sometimes people give a few sketchy facts and ask, "Does this ring a
bell?" This cannot help us fix a bug, so it is basically useless. We
respond by asking for enough details to enable us to investigate. You
might as well expedite matters by sending them to begin with.
To enable us to fix the bug, you should include all these things:
* The version of 'as'. 'as' announces it if you start it with the
'--version' argument.
Without this, we will not know whether there is any point in
looking for the bug in the current version of 'as'.
* Any patches you may have applied to the 'as' source.
* The type of machine you are using, and the operating system name
and version number.
* What compiler (and its version) was used to compile 'as'--e.g.
"'gcc-2.7'".
* The command arguments you gave the assembler to assemble your
example and observe the bug. To guarantee you will not omit
something important, list them all. A copy of the Makefile (or the
output from make) is sufficient.
If we were to try to guess the arguments, we would probably guess
wrong and then we might not encounter the bug.
* A complete input file that will reproduce the bug. If the bug is
observed when the assembler is invoked via a compiler, send the
assembler source, not the high level language source. Most
compilers will produce the assembler source when run with the '-S'
option. If you are using 'gcc', use the options '-v --save-temps';
this will save the assembler source in a file with an extension of
'.s', and also show you exactly how 'as' is being run.
* A description of what behavior you observe that you believe is
incorrect. For example, "It gets a fatal signal."
Of course, if the bug is that 'as' gets a fatal signal, then we
will certainly notice it. But if the bug is incorrect output, we
might not notice unless it is glaringly wrong. You might as well
not give us a chance to make a mistake.
Even if the problem you experience is a fatal signal, you should
still say so explicitly. Suppose something strange is going on,
such as, your copy of 'as' is out of sync, or you have encountered
a bug in the C library on your system. (This has happened!) Your
copy might crash and ours would not. If you told us to expect a
crash, then when ours fails to crash, we would know that the bug
was not happening for us. If you had not told us to expect a
crash, then we would not be able to draw any conclusion from our
observations.
* If you wish to suggest changes to the 'as' source, send us context
diffs, as generated by 'diff' with the '-u', '-c', or '-p' option.
Always send diffs from the old file to the new file. If you even
discuss something in the 'as' source, refer to it by context, not
by line number.
The line numbers in our development sources will not match those in
your sources. Your line numbers would convey no useful information
to us.
Here are some things that are not necessary:
* A description of the envelope of the bug.
Often people who encounter a bug spend a lot of time investigating
which changes to the input file will make the bug go away and which
changes will not affect it.
This is often time consuming and not very useful, because the way
we will find the bug is by running a single example under the
debugger with breakpoints, not by pure deduction from a series of
examples. We recommend that you save your time for something else.
Of course, if you can find a simpler example to report _instead_ of
the original one, that is a convenience for us. Errors in the
output will be easier to spot, running under the debugger will take
less time, and so on.
However, simplification is not vital; if you do not want to do
this, report the bug anyway and send us the entire test case you
used.
* A patch for the bug.
A patch for the bug does help us if it is a good one. But do not
omit the necessary information, such as the test case, on the
assumption that a patch is all we need. We might see problems with
your patch and decide to fix the problem another way, or we might
not understand it at all.
Sometimes with a program as complicated as 'as' it is very hard to
construct an example that will make the program follow a certain
path through the code. If you do not send us the example, we will
not be able to construct one, so we will not be able to verify that
the bug is fixed.
And if we cannot understand what bug you are trying to fix, or why
your patch should be an improvement, we will not install it. A
test case will help us to understand.
* A guess about what the bug is or what it depends on.
Such guesses are usually wrong. Even we cannot guess right about
such things without first using the debugger to find the facts.

File: as.info, Node: Acknowledgements, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top
11 Acknowledgements
*******************
If you have contributed to GAS and your name isn't listed here, it is
not meant as a slight. We just don't know about it. Send mail to the
maintainer, and we'll correct the situation. Currently the maintainer
is Nick Clifton (email address 'nickc@redhat.com').
Dean Elsner wrote the original GNU assembler for the VAX.(1)
Jay Fenlason maintained GAS for a while, adding support for
GDB-specific debug information and the 68k series machines, most of the
preprocessing pass, and extensive changes in 'messages.c',
'input-file.c', 'write.c'.
K. Richard Pixley maintained GAS for a while, adding various
enhancements and many bug fixes, including merging support for several
processors, breaking GAS up to handle multiple object file format back
ends (including heavy rewrite, testing, an integration of the coff and
b.out back ends), adding configuration including heavy testing and
verification of cross assemblers and file splits and renaming, converted
GAS to strictly ANSI C including full prototypes, added support for
m680[34]0 and cpu32, did considerable work on i960 including a COFF port
(including considerable amounts of reverse engineering), a SPARC opcode
file rewrite, DECstation, rs6000, and hp300hpux host ports, updated
"know" assertions and made them work, much other reorganization,
cleanup, and lint.
Ken Raeburn wrote the high-level BFD interface code to replace most
of the code in format-specific I/O modules.
The original VMS support was contributed by David L. Kashtan. Eric
Youngdale has done much work with it since.
The Intel 80386 machine description was written by Eliot Dresselhaus.
Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
The Motorola 88k machine description was contributed by Devon Bowen
of Buffalo University and Torbjorn Granlund of the Swedish Institute of
Computer Science.
Keith Knowles at the Open Software Foundation wrote the original MIPS
back end ('tc-mips.c', 'tc-mips.h'), and contributed Rose format support
(which hasn't been merged in yet). Ralph Campbell worked with the MIPS
code to support a.out format.
Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
Steve Chamberlain of Cygnus Support. Steve also modified the COFF back
end to use BFD for some low-level operations, for use with the H8/300
and AMD 29k targets.
John Gilmore built the AMD 29000 support, added '.include' support,
and simplified the configuration of which versions accept which
directives. He updated the 68k machine description so that Motorola's
opcodes always produced fixed-size instructions (e.g., 'jsr'), while
synthetic instructions remained shrinkable ('jbsr'). John fixed many
bugs, including true tested cross-compilation support, and one bug in
relaxation that took a week and required the proverbial one-bit fix.
Ian Lance Taylor of Cygnus Support merged the Motorola and MIT syntax
for the 68k, completed support for some COFF targets (68k, i386 SVR3,
and SCO Unix), added support for MIPS ECOFF and ELF targets, wrote the
initial RS/6000 and PowerPC assembler, and made a few other minor
patches.
Steve Chamberlain made GAS able to generate listings.
Hewlett-Packard contributed support for the HP9000/300.
Jeff Law wrote GAS and BFD support for the native HPPA object format
(SOM) along with a fairly extensive HPPA testsuite (for both SOM and ELF
object formats). This work was supported by both the Center for
Software Science at the University of Utah and Cygnus Support.
Support for ELF format files has been worked on by Mark Eichin of
Cygnus Support (original, incomplete implementation for SPARC), Pete
Hoogenboom and Jeff Law at the University of Utah (HPPA mainly), Michael
Meissner of the Open Software Foundation (i386 mainly), and Ken Raeburn
of Cygnus Support (sparc, and some initial 64-bit support).
Linas Vepstas added GAS support for the ESA/390 "IBM 370"
architecture.
Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote
GAS and BFD support for openVMS/Alpha.
Timothy Wall, Michael Hayes, and Greg Smart contributed to the
various tic* flavors.
David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from
Tensilica, Inc. added support for Xtensa processors.
Several engineers at Cygnus Support have also provided many small bug
fixes and configuration enhancements.
Jon Beniston added support for the Lattice Mico32 architecture.
Many others have contributed large or small bugfixes and
enhancements. If you have contributed significant work and are not
mentioned on this list, and want to be, let us know. Some of the
history has been lost; we are not intentionally leaving anyone out.
---------- Footnotes ----------
(1) Any more details?

File: as.info, Node: GNU Free Documentation License, Next: AS Index, Prev: Acknowledgements, Up: Top
Appendix A GNU Free Documentation License
*****************************************
Version 1.3, 3 November 2008
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
<http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or
noncommercially. Secondarily, this License preserves for the
author and publisher a way to get credit for their work, while not
being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense.
It complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for
free software, because free software needs free documentation: a
free program should come with manuals providing the same freedoms
that the software does. But this License is not limited to
software manuals; it can be used for any textual work, regardless
of subject matter or whether it is published as a printed book. We
recommend this License principally for works whose purpose is
instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium,
that contains a notice placed by the copyright holder saying it can
be distributed under the terms of this License. Such a notice
grants a world-wide, royalty-free license, unlimited in duration,
to use that work under the conditions stated herein. The
"Document", below, refers to any such manual or work. Any member
of the public is a licensee, and is addressed as "you". You accept
the license if you copy, modify or distribute the work in a way
requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section
of the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could
fall directly within that overall subject. (Thus, if the Document
is in part a textbook of mathematics, a Secondary Section may not
explain any mathematics.) The relationship could be a matter of
historical connection with the subject or with related matters, or
of legal, commercial, philosophical, ethical or political position
regarding them.
The "Invariant Sections" are certain Secondary Sections whose
titles are designated, as being those of Invariant Sections, in the
notice that says that the Document is released under this License.
If a section does not fit the above definition of Secondary then it
is not allowed to be designated as Invariant. The Document may
contain zero Invariant Sections. If the Document does not identify
any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
that says that the Document is released under this License. A
Front-Cover Text may be at most 5 words, and a Back-Cover Text may
be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed
of pixels) generic paint programs or (for drawings) some widely
available drawing editor, and that is suitable for input to text
formatters or for automatic translation to a variety of formats
suitable for input to text formatters. A copy made in an otherwise
Transparent file format whose markup, or absence of markup, has
been arranged to thwart or discourage subsequent modification by
readers is not Transparent. An image format is not Transparent if
used for any substantial amount of text. A copy that is not
"Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format,
SGML or XML using a publicly available DTD, and standard-conforming
simple HTML, PostScript or PDF designed for human modification.
Examples of transparent image formats include PNG, XCF and JPG.
Opaque formats include proprietary formats that can be read and
edited only by proprietary word processors, SGML or XML for which
the DTD and/or processing tools are not generally available, and
the machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the
material this License requires to appear in the title page. For
works in formats which do not have any title page as such, "Title
Page" means the text near the most prominent appearance of the
work's title, preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies
of the Document to the public.
A section "Entitled XYZ" means a named subunit of the Document
whose title either is precisely XYZ or contains XYZ in parentheses
following text that translates XYZ in another language. (Here XYZ
stands for a specific section name mentioned below, such as
"Acknowledgements", "Dedications", "Endorsements", or "History".)
To "Preserve the Title" of such a section when you modify the
Document means that it remains a section "Entitled XYZ" according
to this definition.
The Document may include Warranty Disclaimers next to the notice
which states that this License applies to the Document. These
Warranty Disclaimers are considered to be included by reference in
this License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and
has no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License
applies to the Document are reproduced in all copies, and that you
add no other conditions whatsoever to those of this License. You
may not use technical measures to obstruct or control the reading
or further copying of the copies you make or distribute. However,
you may accept compensation in exchange for copies. If you
distribute a large enough number of copies you must also follow the
conditions in section 3.
You may also lend copies, under the same conditions stated above,
and you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly
have printed covers) of the Document, numbering more than 100, and
the Document's license notice requires Cover Texts, you must
enclose the copies in covers that carry, clearly and legibly, all
these Cover Texts: Front-Cover Texts on the front cover, and
Back-Cover Texts on the back cover. Both covers must also clearly
and legibly identify you as the publisher of these copies. The
front cover must present the full title with all words of the title
equally prominent and visible. You may add other material on the
covers in addition. Copying with changes limited to the covers, as
long as they preserve the title of the Document and satisfy these
conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto
adjacent pages.
If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a machine-readable
Transparent copy along with each Opaque copy, or state in or with
each Opaque copy a computer-network location from which the general
network-using public has access to download using public-standard
network protocols a complete Transparent copy of the Document, free
of added material. If you use the latter option, you must take
reasonably prudent steps, when you begin distribution of Opaque
copies in quantity, to ensure that this Transparent copy will
remain thus accessible at the stated location until at least one
year after the last time you distribute an Opaque copy (directly or
through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of
the Document well before redistributing any large number of copies,
to give them a chance to provide you with an updated version of the
Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document
under the conditions of sections 2 and 3 above, provided that you
release the Modified Version under precisely this License, with the
Modified Version filling the role of the Document, thus licensing
distribution and modification of the Modified Version to whoever
possesses a copy of it. In addition, you must do these things in
the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title
distinct from that of the Document, and from those of previous
versions (which should, if there were any, be listed in the
History section of the Document). You may use the same title
as a previous version if the original publisher of that
version gives permission.
B. List on the Title Page, as authors, one or more persons or
entities responsible for authorship of the modifications in
the Modified Version, together with at least five of the
principal authors of the Document (all of its principal
authors, if it has fewer than five), unless they release you
from this requirement.
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license
notice giving the public permission to use the Modified
Version under the terms of this License, in the form shown in
the Addendum below.
G. Preserve in that license notice the full lists of Invariant
Sections and required Cover Texts given in the Document's
license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title,
and add to it an item stating at least the title, year, new
authors, and publisher of the Modified Version as given on the
Title Page. If there is no section Entitled "History" in the
Document, create one stating the title, year, authors, and
publisher of the Document as given on its Title Page, then add
an item describing the Modified Version as stated in the
previous sentence.
J. Preserve the network location, if any, given in the Document
for public access to a Transparent copy of the Document, and
likewise the network locations given in the Document for
previous versions it was based on. These may be placed in the
"History" section. You may omit a network location for a work
that was published at least four years before the Document
itself, or if the original publisher of the version it refers
to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section
all the substance and tone of each of the contributor
acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered
in their text and in their titles. Section numbers or the
equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled
"Endorsements" or to conflict in title with any Invariant
Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no
material copied from the Document, you may at your option designate
some or all of these sections as invariant. To do this, add their
titles to the list of Invariant Sections in the Modified Version's
license notice. These titles must be distinct from any other
section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text
has been approved by an organization as the authoritative
definition of a standard.
You may add a passage of up to five words as a Front-Cover Text,
and a passage of up to 25 words as a Back-Cover Text, to the end of
the list of Cover Texts in the Modified Version. Only one passage
of Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document
already includes a cover text for the same cover, previously added
by you or by arrangement made by the same entity you are acting on
behalf of, you may not add another; but you may replace the old
one, on explicit permission from the previous publisher that added
the old one.
The author(s) and publisher(s) of the Document do not by this
License give permission to use their names for publicity for or to
assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under
this License, under the terms defined in section 4 above for
modified versions, provided that you include in the combination all
of the Invariant Sections of all of the original documents,
unmodified, and list them all as Invariant Sections of your
combined work in its license notice, and that you preserve all
their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name
but different contents, make the title of each such section unique
by adding at the end of it, in parentheses, the name of the
original author or publisher of that section if known, or else a
unique number. Make the same adjustment to the section titles in
the list of Invariant Sections in the license notice of the
combined work.
In the combination, you must combine any sections Entitled
"History" in the various original documents, forming one section
Entitled "History"; likewise combine any sections Entitled
"Acknowledgements", and any sections Entitled "Dedications". You
must delete all sections Entitled "Endorsements."
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy
that is included in the collection, provided that you follow the
rules of this License for verbatim copying of each of the documents
in all other respects.
You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert
a copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of a
storage or distribution medium, is called an "aggregate" if the
copyright resulting from the compilation is not used to limit the
legal rights of the compilation's users beyond what the individual
works permit. When the Document is included in an aggregate, this
License does not apply to the other works in the aggregate which
are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half
of the entire aggregate, the Document's Cover Texts may be placed
on covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic
form. Otherwise they must appear on printed covers that bracket
the whole aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section
4. Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also
include the original English version of this License and the
original versions of those notices and disclaimers. In case of a
disagreement between the translation and the original version of
this License or a notice or disclaimer, the original version will
prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to
Preserve its Title (section 1) will typically require changing the
actual title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void,
and will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the
copyright holder fails to notify you of the violation by some
reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from
that copyright holder, and you cure the violation prior to 30 days
after your receipt of the notice.
Termination of your rights under this section does not terminate
the licenses of parties who have received copies or rights from you
under this License. If your rights have been terminated and not
permanently reinstated, receipt of a copy of some or all of the
same material does not give you any rights to use it.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of
the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
<http://www.gnu.org/copyleft/>.
Each version of the License is given a distinguishing version
number. If the Document specifies that a particular numbered
version of this License "or any later version" applies to it, you
have the option of following the terms and conditions either of
that specified version or of any later version that has been
published (not as a draft) by the Free Software Foundation. If the
Document does not specify a version number of this License, you may
choose any version ever published (not as a draft) by the Free
Software Foundation. If the Document specifies that a proxy can
decide which future versions of this License can be used, that
proxy's public statement of acceptance of a version permanently
authorizes you to choose that version for the Document.
11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server.
A "Massive Multiauthor Collaboration" (or "MMC") contained in the
site means any set of copyrightable works thus published on the MMC
site.
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
"Incorporate" means to publish or republish a Document, in whole or
in part, as part of another Document.
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this
License somewhere other than this MMC, and subsequently
incorporated in whole or in part into the MMC, (1) had no cover
texts or invariant sections, and (2) were thus incorporated prior
to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the
site under CC-BY-SA on the same site at any time before August 1,
2009, provided the MMC is eligible for relicensing.
ADDENDUM: How to use this License for your documents
====================================================
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
Copyright (C) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
If you have Invariant Sections, Front-Cover Texts and Back-Cover
Texts, replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with
the Front-Cover Texts being LIST, and with the Back-Cover Texts
being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of free
software license, such as the GNU General Public License, to permit
their use in free software.

File: as.info, Node: AS Index, Prev: GNU Free Documentation License, Up: Top
AS Index
********
�[index�]
* Menu:
* #: Comments. (line 33)
* #APP: Preprocessing. (line 26)
* #NO_APP: Preprocessing. (line 26)
* '$' in symbol names: D10V-Chars. (line 46)
* '$' in symbol names <1>: D30V-Chars. (line 70)
* '$' in symbol names <2>: Meta-Chars. (line 10)
* '$' in symbol names <3>: SH-Chars. (line 15)
* '$' in symbol names <4>: SH64-Chars. (line 15)
* '$a': ARM Mapping Symbols. (line 9)
* '$acos' math builtin, TIC54X: TIC54X-Builtins. (line 10)
* '$asin' math builtin, TIC54X: TIC54X-Builtins. (line 13)
* '$atan' math builtin, TIC54X: TIC54X-Builtins. (line 16)
* '$atan2' math builtin, TIC54X: TIC54X-Builtins. (line 19)
* '$ceil' math builtin, TIC54X: TIC54X-Builtins. (line 22)
* '$cos' math builtin, TIC54X: TIC54X-Builtins. (line 28)
* '$cosh' math builtin, TIC54X: TIC54X-Builtins. (line 25)
* '$cvf' math builtin, TIC54X: TIC54X-Builtins. (line 31)
* '$cvi' math builtin, TIC54X: TIC54X-Builtins. (line 34)
* '$d': AArch64 Mapping Symbols.
(line 12)
* '$d' <1>: ARM Mapping Symbols. (line 15)
* '$exp' math builtin, TIC54X: TIC54X-Builtins. (line 37)
* '$fabs' math builtin, TIC54X: TIC54X-Builtins. (line 40)
* '$firstch' subsym builtin, TIC54X: TIC54X-Macros. (line 26)
* '$floor' math builtin, TIC54X: TIC54X-Builtins. (line 43)
* '$fmod' math builtin, TIC54X: TIC54X-Builtins. (line 47)
* '$int' math builtin, TIC54X: TIC54X-Builtins. (line 50)
* '$iscons' subsym builtin, TIC54X: TIC54X-Macros. (line 43)
* '$isdefed' subsym builtin, TIC54X: TIC54X-Macros. (line 34)
* '$ismember' subsym builtin, TIC54X: TIC54X-Macros. (line 38)
* '$isname' subsym builtin, TIC54X: TIC54X-Macros. (line 47)
* '$isreg' subsym builtin, TIC54X: TIC54X-Macros. (line 50)
* '$lastch' subsym builtin, TIC54X: TIC54X-Macros. (line 30)
* '$ldexp' math builtin, TIC54X: TIC54X-Builtins. (line 53)
* '$log' math builtin, TIC54X: TIC54X-Builtins. (line 59)
* '$log10' math builtin, TIC54X: TIC54X-Builtins. (line 56)
* '$max' math builtin, TIC54X: TIC54X-Builtins. (line 62)
* '$min' math builtin, TIC54X: TIC54X-Builtins. (line 65)
* '$pow' math builtin, TIC54X: TIC54X-Builtins. (line 68)
* '$round' math builtin, TIC54X: TIC54X-Builtins. (line 71)
* '$sgn' math builtin, TIC54X: TIC54X-Builtins. (line 74)
* '$sin' math builtin, TIC54X: TIC54X-Builtins. (line 77)
* '$sinh' math builtin, TIC54X: TIC54X-Builtins. (line 80)
* '$sqrt' math builtin, TIC54X: TIC54X-Builtins. (line 83)
* '$structacc' subsym builtin, TIC54X: TIC54X-Macros. (line 57)
* '$structsz' subsym builtin, TIC54X: TIC54X-Macros. (line 54)
* '$symcmp' subsym builtin, TIC54X: TIC54X-Macros. (line 23)
* '$symlen' subsym builtin, TIC54X: TIC54X-Macros. (line 20)
* '$t': ARM Mapping Symbols. (line 12)
* '$tan' math builtin, TIC54X: TIC54X-Builtins. (line 86)
* '$tanh' math builtin, TIC54X: TIC54X-Builtins. (line 89)
* '$trunc' math builtin, TIC54X: TIC54X-Builtins. (line 92)
* '$x': AArch64 Mapping Symbols.
(line 9)
* %gp: RX-Modifiers. (line 6)
* '%gpreg': RX-Modifiers. (line 22)
* '%pidreg': RX-Modifiers. (line 25)
* '-+' option, VAX/VMS: VAX-Opts. (line 71)
* --: Command Line. (line 10)
* '--32' option, i386: i386-Options. (line 8)
* '--32' option, x86-64: i386-Options. (line 8)
* '--64' option, i386: i386-Options. (line 8)
* '--64' option, x86-64: i386-Options. (line 8)
* --absolute-literals: Xtensa Options. (line 20)
* --allow-reg-prefix: SH Options. (line 9)
* --alternate: alternate. (line 6)
* '--base-size-default-16': M68K-Opts. (line 66)
* '--base-size-default-32': M68K-Opts. (line 66)
* --big: SH Options. (line 9)
* '--bitwise-or' option, M680x0: M68K-Opts. (line 59)
* '--disp-size-default-16': M68K-Opts. (line 75)
* '--disp-size-default-32': M68K-Opts. (line 75)
* '--divide' option, i386: i386-Options. (line 24)
* --dsp: SH Options. (line 9)
* '--emulation=crisaout' command line option, CRIS: CRIS-Opts.
(line 9)
* '--emulation=criself' command line option, CRIS: CRIS-Opts. (line 9)
* --enforce-aligned-data: Sparc-Aligned-Data. (line 11)
* --fatal-warnings: W. (line 16)
* --fdpic: SH Options. (line 31)
* '--fix-v4bx' command line option, ARM: ARM Options. (line 177)
* '--fixed-special-register-names' command line option, MMIX: MMIX-Opts.
(line 8)
* '--force-long-branches': M68HC11-Opts. (line 81)
* '--generate-example': M68HC11-Opts. (line 98)
* '--globalize-symbols' command line option, MMIX: MMIX-Opts. (line 12)
* '--gnu-syntax' command line option, MMIX: MMIX-Opts. (line 16)
* --hash-size=NUMBER: Overview. (line 422)
* '--linker-allocated-gregs' command line option, MMIX: MMIX-Opts.
(line 67)
* --listing-cont-lines: listing. (line 34)
* --listing-lhs-width: listing. (line 16)
* --listing-lhs-width2: listing. (line 21)
* --listing-rhs-width: listing. (line 28)
* --little: SH Options. (line 9)
* --longcalls: Xtensa Options. (line 34)
* '--march=ARCHITECTURE' command line option, CRIS: CRIS-Opts.
(line 34)
* --MD: MD. (line 6)
* '--mul-bug-abort' command line option, CRIS: CRIS-Opts. (line 63)
* --no-absolute-literals: Xtensa Options. (line 20)
* '--no-expand' command line option, MMIX: MMIX-Opts. (line 31)
* --no-longcalls: Xtensa Options. (line 34)
* '--no-merge-gregs' command line option, MMIX: MMIX-Opts. (line 36)
* '--no-mul-bug-abort' command line option, CRIS: CRIS-Opts. (line 63)
* '--no-predefined-syms' command line option, MMIX: MMIX-Opts.
(line 22)
* '--no-pushj-stubs' command line option, MMIX: MMIX-Opts. (line 54)
* '--no-stubs' command line option, MMIX: MMIX-Opts. (line 54)
* --no-target-align: Xtensa Options. (line 27)
* --no-text-section-literals: Xtensa Options. (line 7)
* --no-trampolines: Xtensa Options. (line 55)
* --no-transform: Xtensa Options. (line 43)
* '--no-underscore' command line option, CRIS: CRIS-Opts. (line 15)
* --no-warn: W. (line 11)
* '--pcrel': M68K-Opts. (line 87)
* '--pic' command line option, CRIS: CRIS-Opts. (line 27)
* '--print-insn-syntax': M68HC11-Opts. (line 87)
* '--print-insn-syntax' <1>: XGATE-Opts. (line 25)
* '--print-opcodes': M68HC11-Opts. (line 91)
* '--print-opcodes' <1>: XGATE-Opts. (line 29)
* '--register-prefix-optional' option, M680x0: M68K-Opts. (line 46)
* --relax: SH Options. (line 9)
* '--relax' command line option, MMIX: MMIX-Opts. (line 19)
* --rename-section: Xtensa Options. (line 51)
* --renesas: SH Options. (line 9)
* --sectname-subst: Section. (line 70)
* '--short-branches': M68HC11-Opts. (line 67)
* --small: SH Options. (line 9)
* --statistics: statistics. (line 6)
* '--strict-direct-mode': M68HC11-Opts. (line 57)
* --target-align: Xtensa Options. (line 27)
* --text-section-literals: Xtensa Options. (line 7)
* --traditional-format: traditional-format. (line 6)
* --trampolines: Xtensa Options. (line 55)
* --transform: Xtensa Options. (line 43)
* '--underscore' command line option, CRIS: CRIS-Opts. (line 15)
* --warn: W. (line 19)
* '--x32' option, i386: i386-Options. (line 8)
* '--x32' option, x86-64: i386-Options. (line 8)
* '--xgate-ramoffset': M68HC11-Opts. (line 36)
* '-1' option, VAX/VMS: VAX-Opts. (line 77)
* '-32addr' command line option, Alpha: Alpha Options. (line 57)
* -a: a. (line 6)
* '-A' options, i960: Options-i960. (line 6)
* -ac: a. (line 6)
* -ad: a. (line 6)
* -ag: a. (line 6)
* -ah: a. (line 6)
* -al: a. (line 6)
* -Aleon: Sparc-Opts. (line 25)
* -an: a. (line 6)
* -as: a. (line 6)
* -Asparc: Sparc-Opts. (line 25)
* -Asparcfmaf: Sparc-Opts. (line 25)
* -Asparcima: Sparc-Opts. (line 25)
* -Asparclet: Sparc-Opts. (line 25)
* -Asparclite: Sparc-Opts. (line 25)
* -Asparcvis: Sparc-Opts. (line 25)
* -Asparcvis2: Sparc-Opts. (line 25)
* -Asparcvis3: Sparc-Opts. (line 25)
* -Asparcvis3r: Sparc-Opts. (line 25)
* -Av6: Sparc-Opts. (line 25)
* -Av7: Sparc-Opts. (line 25)
* -Av8: Sparc-Opts. (line 25)
* -Av9: Sparc-Opts. (line 25)
* -Av9a: Sparc-Opts. (line 25)
* -Av9b: Sparc-Opts. (line 25)
* -Av9c: Sparc-Opts. (line 25)
* -Av9d: Sparc-Opts. (line 25)
* -Av9e: Sparc-Opts. (line 25)
* -Av9m: Sparc-Opts. (line 25)
* -Av9v: Sparc-Opts. (line 25)
* '-b' option, i960: Options-i960. (line 22)
* '-big' option, M32R: M32R-Opts. (line 35)
* -D: D. (line 6)
* '-D', ignored on VAX: VAX-Opts. (line 11)
* '-d', VAX option: VAX-Opts. (line 16)
* '-eabi=' command line option, ARM: ARM Options. (line 160)
* '-EB' command line option, AArch64: AArch64 Options. (line 6)
* '-EB' command line option, ARC: ARC Options. (line 30)
* '-EB' command line option, ARM: ARM Options. (line 165)
* '-EB' option (MIPS): MIPS Options. (line 13)
* '-EB' option, M32R: M32R-Opts. (line 39)
* '-EB' option, TILE-Gx: TILE-Gx Options. (line 11)
* '-EL' command line option, AArch64: AArch64 Options. (line 10)
* '-EL' command line option, ARC: ARC Options. (line 34)
* '-EL' command line option, ARM: ARM Options. (line 169)
* '-EL' option (MIPS): MIPS Options. (line 13)
* '-EL' option, M32R: M32R-Opts. (line 32)
* '-EL' option, TILE-Gx: TILE-Gx Options. (line 11)
* -f: f. (line 6)
* '-F' command line option, Alpha: Alpha Options. (line 57)
* '-g' command line option, Alpha: Alpha Options. (line 47)
* '-G' command line option, Alpha: Alpha Options. (line 53)
* '-G' option (MIPS): MIPS Options. (line 8)
* '-h' option, VAX/VMS: VAX-Opts. (line 45)
* '-H' option, VAX/VMS: VAX-Opts. (line 81)
* -I PATH: I. (line 6)
* '-ignore-parallel-conflicts' option, M32RX: M32R-Opts. (line 87)
* '-Ip' option, M32RX: M32R-Opts. (line 97)
* '-J', ignored on VAX: VAX-Opts. (line 27)
* -K: K. (line 6)
* '-k' command line option, ARM: ARM Options. (line 173)
* '-KPIC' option, M32R: M32R-Opts. (line 42)
* '-KPIC' option, MIPS: MIPS Options. (line 21)
* -L: L. (line 6)
* '-l' option, M680x0: M68K-Opts. (line 34)
* '-little' option, M32R: M32R-Opts. (line 27)
* -M: M. (line 6)
* -m11/03: PDP-11-Options. (line 140)
* -m11/04: PDP-11-Options. (line 143)
* -m11/05: PDP-11-Options. (line 146)
* -m11/10: PDP-11-Options. (line 146)
* -m11/15: PDP-11-Options. (line 149)
* -m11/20: PDP-11-Options. (line 149)
* -m11/21: PDP-11-Options. (line 152)
* -m11/23: PDP-11-Options. (line 155)
* -m11/24: PDP-11-Options. (line 155)
* -m11/34: PDP-11-Options. (line 158)
* -m11/34a: PDP-11-Options. (line 161)
* -m11/35: PDP-11-Options. (line 164)
* -m11/40: PDP-11-Options. (line 164)
* -m11/44: PDP-11-Options. (line 167)
* -m11/45: PDP-11-Options. (line 170)
* -m11/50: PDP-11-Options. (line 170)
* -m11/53: PDP-11-Options. (line 173)
* -m11/55: PDP-11-Options. (line 170)
* -m11/60: PDP-11-Options. (line 176)
* -m11/70: PDP-11-Options. (line 170)
* -m11/73: PDP-11-Options. (line 173)
* -m11/83: PDP-11-Options. (line 173)
* -m11/84: PDP-11-Options. (line 173)
* -m11/93: PDP-11-Options. (line 173)
* -m11/94: PDP-11-Options. (line 173)
* '-m16c' option, M16C: M32C-Opts. (line 12)
* '-m31' option, s390: s390 Options. (line 8)
* '-m32' option, TILE-Gx: TILE-Gx Options. (line 8)
* '-m32bit-doubles': RX-Opts. (line 9)
* '-m32c' option, M32C: M32C-Opts. (line 9)
* '-m32r' option, M32R: M32R-Opts. (line 21)
* '-m32rx' option, M32R2: M32R-Opts. (line 17)
* '-m32rx' option, M32RX: M32R-Opts. (line 9)
* '-m4byte-align' command line option, V850: V850 Options. (line 90)
* '-m64' option, s390: s390 Options. (line 8)
* '-m64' option, TILE-Gx: TILE-Gx Options. (line 8)
* '-m64bit-doubles': RX-Opts. (line 15)
* '-m68000' and related options: M68K-Opts. (line 99)
* '-m68hc11': M68HC11-Opts. (line 9)
* '-m68hc12': M68HC11-Opts. (line 14)
* '-m68hcs12': M68HC11-Opts. (line 21)
* '-m8byte-align' command line option, V850: V850 Options. (line 86)
* '-mabi=' command line option, AArch64: AArch64 Options. (line 14)
* '-madd-bnd-prefix' option, i386: i386-Options. (line 126)
* '-madd-bnd-prefix' option, x86-64: i386-Options. (line 126)
* -mall: PDP-11-Options. (line 26)
* '-mall-enabled' command line option, LM32: LM32 Options. (line 30)
* -mall-extensions: PDP-11-Options. (line 26)
* '-mall-opcodes' command line option, AVR: AVR Options. (line 108)
* '-mapcs-26' command line option, ARM: ARM Options. (line 132)
* '-mapcs-32' command line option, ARM: ARM Options. (line 132)
* '-mapcs-float' command line option, ARM: ARM Options. (line 146)
* '-mapcs-reentrant' command line option, ARM: ARM Options. (line 151)
* '-march=' command line option, AArch64: AArch64 Options. (line 37)
* '-march=' command line option, ARM: ARM Options. (line 67)
* '-march=' command line option, M680x0: M68K-Opts. (line 8)
* '-march=' command line option, TIC6X: TIC6X Options. (line 6)
* '-march=' option, i386: i386-Options. (line 31)
* '-march=' option, s390: s390 Options. (line 25)
* '-march=' option, x86-64: i386-Options. (line 31)
* '-marc[5|6|7|8]' command line option, ARC: ARC Options. (line 6)
* '-matpcs' command line option, ARM: ARM Options. (line 138)
* '-mavxscalar=' option, i386: i386-Options. (line 84)
* '-mavxscalar=' option, x86-64: i386-Options. (line 84)
* '-mbarrel-shift-enabled' command line option, LM32: LM32 Options.
(line 12)
* '-mbig-endian': RX-Opts. (line 20)
* '-mbig-obj' option, x86-64: i386-Options. (line 131)
* '-mbreak-enabled' command line option, LM32: LM32 Options. (line 27)
* '-mccs' command line option, ARM: ARM Options. (line 186)
* -mcis: PDP-11-Options. (line 32)
* '-mconstant-gp' command line option, IA-64: IA-64 Options. (line 6)
* '-mCPU' command line option, Alpha: Alpha Options. (line 6)
* '-mcpu' option, cpu: TIC54X-Opts. (line 15)
* '-mcpu=': RX-Opts. (line 75)
* '-mcpu=' command line option, AArch64: AArch64 Options. (line 19)
* '-mcpu=' command line option, ARM: ARM Options. (line 6)
* '-mcpu=' command line option, Blackfin: Blackfin Options. (line 6)
* '-mcpu=' command line option, M680x0: M68K-Opts. (line 14)
* -mcsm: PDP-11-Options. (line 43)
* '-mdcache-enabled' command line option, LM32: LM32 Options. (line 24)
* '-mdebug' command line option, Alpha: Alpha Options. (line 25)
* '-mdivide-enabled' command line option, LM32: LM32 Options. (line 9)
* '-mdsbt' command line option, TIC6X: TIC6X Options. (line 13)
* '-me' option, stderr redirect: TIC54X-Opts. (line 20)
* -meis: PDP-11-Options. (line 46)
* '-mepiphany' command line option, Epiphany: Epiphany Options.
(line 9)
* '-mepiphany16' command line option, Epiphany: Epiphany Options.
(line 13)
* '-merrors-to-file' option, stderr redirect: TIC54X-Opts. (line 20)
* '-mesa' option, s390: s390 Options. (line 17)
* '-mevexlig=' option, i386: i386-Options. (line 92)
* '-mevexlig=' option, x86-64: i386-Options. (line 92)
* '-mevexrcig=' option, i386: i386-Options. (line 144)
* '-mevexrcig=' option, x86-64: i386-Options. (line 144)
* '-mevexwig=' option, i386: i386-Options. (line 102)
* '-mevexwig=' option, x86-64: i386-Options. (line 102)
* '-mf' option, far-mode: TIC54X-Opts. (line 8)
* -mf11: PDP-11-Options. (line 122)
* '-mfar-mode' option, far-mode: TIC54X-Opts. (line 8)
* '-mfdpic' command line option, Blackfin: Blackfin Options. (line 19)
* -mfis: PDP-11-Options. (line 51)
* '-mfloat-abi=' command line option, ARM: ARM Options. (line 155)
* -mfp-11: PDP-11-Options. (line 56)
* -mfpp: PDP-11-Options. (line 56)
* -mfpu: PDP-11-Options. (line 56)
* '-mfpu=' command line option, ARM: ARM Options. (line 83)
* '-mgcc-abi': RX-Opts. (line 63)
* '-mgcc-abi' command line option, V850: V850 Options. (line 79)
* '-micache-enabled' command line option, LM32: LM32 Options. (line 21)
* '-mimplicit-it' command line option, ARM: ARM Options. (line 116)
* '-mint-register': RX-Opts. (line 57)
* '-mip2022' option, IP2K: IP2K-Opts. (line 14)
* '-mip2022ext' option, IP2022: IP2K-Opts. (line 9)
* -mj11: PDP-11-Options. (line 126)
* -mka11: PDP-11-Options. (line 92)
* -mkb11: PDP-11-Options. (line 95)
* -mkd11a: PDP-11-Options. (line 98)
* -mkd11b: PDP-11-Options. (line 101)
* -mkd11d: PDP-11-Options. (line 104)
* -mkd11e: PDP-11-Options. (line 107)
* -mkd11f: PDP-11-Options. (line 110)
* -mkd11h: PDP-11-Options. (line 110)
* -mkd11k: PDP-11-Options. (line 114)
* -mkd11q: PDP-11-Options. (line 110)
* -mkd11z: PDP-11-Options. (line 118)
* -mkev11: PDP-11-Options. (line 51)
* -mkev11 <1>: PDP-11-Options. (line 51)
* -mlimited-eis: PDP-11-Options. (line 64)
* '-mlittle-endian': RX-Opts. (line 26)
* '-mlong': M68HC11-Opts. (line 45)
* '-mlong' <1>: XGATE-Opts. (line 13)
* '-mlong-double': M68HC11-Opts. (line 53)
* '-mlong-double' <1>: XGATE-Opts. (line 21)
* '-mm9s12x': M68HC11-Opts. (line 27)
* '-mm9s12xg': M68HC11-Opts. (line 32)
* '-mmcu=' command line option, AVR: AVR Options. (line 6)
* -mmfpt: PDP-11-Options. (line 70)
* -mmicrocode: PDP-11-Options. (line 83)
* '-mmnemonic=' option, i386: i386-Options. (line 109)
* '-mmnemonic=' option, x86-64: i386-Options. (line 109)
* '-mmultiply-enabled' command line option, LM32: LM32 Options.
(line 6)
* -mmutiproc: PDP-11-Options. (line 73)
* -mmxps: PDP-11-Options. (line 77)
* '-mnaked-reg' option, i386: i386-Options. (line 121)
* '-mnaked-reg' option, x86-64: i386-Options. (line 121)
* '-mnan=' command line option, MIPS: MIPS Options. (line 338)
* -mno-cis: PDP-11-Options. (line 32)
* -mno-csm: PDP-11-Options. (line 43)
* '-mno-dsbt' command line option, TIC6X: TIC6X Options. (line 13)
* -mno-eis: PDP-11-Options. (line 46)
* -mno-extensions: PDP-11-Options. (line 29)
* '-mno-fdpic' command line option, Blackfin: Blackfin Options.
(line 22)
* -mno-fis: PDP-11-Options. (line 51)
* -mno-fp-11: PDP-11-Options. (line 56)
* -mno-fpp: PDP-11-Options. (line 56)
* -mno-fpu: PDP-11-Options. (line 56)
* -mno-kev11: PDP-11-Options. (line 51)
* -mno-limited-eis: PDP-11-Options. (line 64)
* -mno-mfpt: PDP-11-Options. (line 70)
* -mno-microcode: PDP-11-Options. (line 83)
* -mno-mutiproc: PDP-11-Options. (line 73)
* -mno-mxps: PDP-11-Options. (line 77)
* -mno-pic: PDP-11-Options. (line 11)
* '-mno-pic' command line option, TIC6X: TIC6X Options. (line 36)
* '-mno-regnames' option, s390: s390 Options. (line 35)
* '-mno-skip-bug' command line option, AVR: AVR Options. (line 111)
* -mno-spl: PDP-11-Options. (line 80)
* -mno-sym32: MIPS Options. (line 280)
* '-mno-verbose-error' command line option, AArch64: AArch64 Options.
(line 57)
* '-mno-wrap' command line option, AVR: AVR Options. (line 114)
* '-mnopic' command line option, Blackfin: Blackfin Options. (line 22)
* '-momit-lock-prefix=' option, i386: i386-Options. (line 135)
* '-momit-lock-prefix=' option, x86-64: i386-Options. (line 135)
* -mpic: PDP-11-Options. (line 11)
* '-mpic' command line option, TIC6X: TIC6X Options. (line 36)
* '-mpid': RX-Opts. (line 50)
* '-mpid=' command line option, TIC6X: TIC6X Options. (line 23)
* '-mregnames' option, s390: s390 Options. (line 32)
* '-mrelax' command line option, V850: V850 Options. (line 72)
* '-mrh850-abi' command line option, V850: V850 Options. (line 82)
* '-mrmw' command line option, AVR: AVR Options. (line 117)
* '-mrx-abi': RX-Opts. (line 69)
* '-mshort': M68HC11-Opts. (line 40)
* '-mshort' <1>: XGATE-Opts. (line 8)
* '-mshort-double': M68HC11-Opts. (line 49)
* '-mshort-double' <1>: XGATE-Opts. (line 17)
* '-msign-extend-enabled' command line option, LM32: LM32 Options.
(line 15)
* '-msmall-data-limit': RX-Opts. (line 42)
* -mspl: PDP-11-Options. (line 80)
* '-msse-check=' option, i386: i386-Options. (line 74)
* '-msse-check=' option, x86-64: i386-Options. (line 74)
* '-msse2avx' option, i386: i386-Options. (line 70)
* '-msse2avx' option, x86-64: i386-Options. (line 70)
* -msym32: MIPS Options. (line 280)
* '-msyntax=' option, i386: i386-Options. (line 115)
* '-msyntax=' option, x86-64: i386-Options. (line 115)
* -mt11: PDP-11-Options. (line 130)
* '-mthumb' command line option, ARM: ARM Options. (line 107)
* '-mthumb-interwork' command line option, ARM: ARM Options. (line 112)
* '-mtune=' option, i386: i386-Options. (line 62)
* '-mtune=' option, x86-64: i386-Options. (line 62)
* '-muse-conventional-section-names': RX-Opts. (line 33)
* '-muse-renesas-section-names': RX-Opts. (line 37)
* '-muser-enabled' command line option, LM32: LM32 Options. (line 18)
* '-mv850' command line option, V850: V850 Options. (line 23)
* '-mv850any' command line option, V850: V850 Options. (line 41)
* '-mv850e' command line option, V850: V850 Options. (line 29)
* '-mv850e1' command line option, V850: V850 Options. (line 35)
* '-mv850e2' command line option, V850: V850 Options. (line 51)
* '-mv850e2v3' command line option, V850: V850 Options. (line 57)
* '-mv850e2v4' command line option, V850: V850 Options. (line 63)
* '-mv850e3v5' command line option, V850: V850 Options. (line 66)
* '-mverbose-error' command line option, AArch64: AArch64 Options.
(line 53)
* '-mvxworks-pic' option, MIPS: MIPS Options. (line 26)
* '-mwarn-areg-zero' option, s390: s390 Options. (line 38)
* '-mwarn-deprecated' command line option, ARM: ARM Options. (line 181)
* '-mzarch' option, s390: s390 Options. (line 17)
* '-m[no-]68851' command line option, M680x0: M68K-Opts. (line 21)
* '-m[no-]68881' command line option, M680x0: M68K-Opts. (line 21)
* '-m[no-]div' command line option, M680x0: M68K-Opts. (line 21)
* '-m[no-]emac' command line option, M680x0: M68K-Opts. (line 21)
* '-m[no-]float' command line option, M680x0: M68K-Opts. (line 21)
* '-m[no-]mac' command line option, M680x0: M68K-Opts. (line 21)
* '-m[no-]usp' command line option, M680x0: M68K-Opts. (line 21)
* '-N' command line option, CRIS: CRIS-Opts. (line 59)
* '-nIp' option, M32RX: M32R-Opts. (line 101)
* '-no-bitinst', M32R2: M32R-Opts. (line 54)
* '-no-ignore-parallel-conflicts' option, M32RX: M32R-Opts. (line 93)
* '-no-mdebug' command line option, Alpha: Alpha Options. (line 25)
* '-no-parallel' option, M32RX: M32R-Opts. (line 51)
* '-no-relax' option, i960: Options-i960. (line 66)
* '-no-warn-explicit-parallel-conflicts' option, M32RX: M32R-Opts.
(line 79)
* '-no-warn-unmatched-high' option, M32R: M32R-Opts. (line 111)
* '-nocpp' ignored (MIPS): MIPS Options. (line 283)
* '-noreplace' command line option, Alpha: Alpha Options. (line 40)
* -o: o. (line 6)
* '-O' option, M32RX: M32R-Opts. (line 59)
* '-parallel' option, M32RX: M32R-Opts. (line 46)
* -R: R. (line 6)
* '-r800' command line option, Z80: Z80 Options. (line 35)
* '-relax' command line option, Alpha: Alpha Options. (line 32)
* '-replace' command line option, Alpha: Alpha Options. (line 40)
* '-S', ignored on VAX: VAX-Opts. (line 11)
* '-T', ignored on VAX: VAX-Opts. (line 11)
* '-t', ignored on VAX: VAX-Opts. (line 36)
* -v: v. (line 6)
* '-V', redundant on VAX: VAX-Opts. (line 22)
* -version: v. (line 6)
* -W: W. (line 11)
* '-warn-explicit-parallel-conflicts' option, M32RX: M32R-Opts.
(line 65)
* '-warn-unmatched-high' option, M32R: M32R-Opts. (line 105)
* '-Wnp' option, M32RX: M32R-Opts. (line 83)
* '-Wnuh' option, M32RX: M32R-Opts. (line 117)
* '-Wp' option, M32RX: M32R-Opts. (line 75)
* '-wsigned_overflow' command line option, V850: V850 Options.
(line 9)
* '-Wuh' option, M32RX: M32R-Opts. (line 114)
* '-wunsigned_overflow' command line option, V850: V850 Options.
(line 16)
* '-x' command line option, MMIX: MMIX-Opts. (line 44)
* '-z80' command line option, Z80: Z80 Options. (line 8)
* '-z8001' command line option, Z8000: Z8000 Options. (line 6)
* '-z8002' command line option, Z8000: Z8000 Options. (line 9)
* '.' (symbol): Dot. (line 6)
* '.2byte' directive, ARM: ARM Directives. (line 6)
* '.4byte' directive, ARM: ARM Directives. (line 6)
* '.8byte' directive, ARM: ARM Directives. (line 6)
* '.align' directive, ARM: ARM Directives. (line 11)
* '.align' directive, TILE-Gx: TILE-Gx Directives. (line 6)
* '.align' directive, TILEPro: TILEPro Directives. (line 6)
* '.allow_suspicious_bundles' directive, TILE-Gx: TILE-Gx Directives.
(line 10)
* '.allow_suspicious_bundles' directive, TILEPro: TILEPro Directives.
(line 10)
* '.arch' directive, AArch64: AArch64 Directives. (line 6)
* '.arch' directive, ARM: ARM Directives. (line 18)
* '.arch' directive, TIC6X: TIC6X Directives. (line 10)
* '.arch_extension' directive, AArch64: AArch64 Directives. (line 13)
* '.arch_extension' directive, ARM: ARM Directives. (line 25)
* '.arm' directive, ARM: ARM Directives. (line 33)
* '.big' directive, M32RX: M32R-Directives. (line 88)
* '.bss' directive, AArch64: AArch64 Directives. (line 21)
* '.bss' directive, ARM: ARM Directives. (line 36)
* '.c6xabi_attribute' directive, TIC6X: TIC6X Directives. (line 20)
* '.cantunwind' directive, ARM: ARM Directives. (line 39)
* '.cantunwind' directive, TIC6X: TIC6X Directives. (line 13)
* '.code' directive, ARM: ARM Directives. (line 43)
* '.cpu' directive, ARM: ARM Directives. (line 47)
* '.dn' and '.qn' directives, ARM: ARM Directives. (line 54)
* '.eabi_attribute' directive, ARM: ARM Directives. (line 78)
* '.ehtype' directive, TIC6X: TIC6X Directives. (line 31)
* '.endp' directive, TIC6X: TIC6X Directives. (line 34)
* '.even' directive, ARM: ARM Directives. (line 106)
* '.extend' directive, ARM: ARM Directives. (line 109)
* '.fnend' directive, ARM: ARM Directives. (line 115)
* '.fnstart' directive, ARM: ARM Directives. (line 123)
* '.force_thumb' directive, ARM: ARM Directives. (line 126)
* '.fpu' directive, ARM: ARM Directives. (line 130)
* '.global': MIPS insn. (line 12)
* '.gnu_attribute 4, N' directive, MIPS: MIPS FP ABI History. (line 6)
* '.gnu_attribute Tag_GNU_MIPS_ABI_FP, N' directive, MIPS: MIPS FP ABI History.
(line 6)
* '.handlerdata' directive, ARM: ARM Directives. (line 134)
* '.handlerdata' directive, TIC6X: TIC6X Directives. (line 39)
* '.insn': MIPS insn. (line 6)
* '.insn' directive, s390: s390 Directives. (line 11)
* '.inst' directive, ARM: ARM Directives. (line 143)
* '.ldouble' directive, ARM: ARM Directives. (line 109)
* '.little' directive, M32RX: M32R-Directives. (line 82)
* '.long' directive, s390: s390 Directives. (line 16)
* '.ltorg' directive, AArch64: AArch64 Directives. (line 24)
* '.ltorg' directive, ARM: ARM Directives. (line 153)
* '.ltorg' directive, s390: s390 Directives. (line 79)
* '.m32r' directive, M32R: M32R-Directives. (line 66)
* '.m32r2' directive, M32R2: M32R-Directives. (line 77)
* '.m32rx' directive, M32RX: M32R-Directives. (line 72)
* '.machine' directive, s390: s390 Directives. (line 84)
* '.machinemode' directive, s390: s390 Directives. (line 93)
* '.module': MIPS assembly options.
(line 6)
* '.module fp=NN' directive, MIPS: MIPS FP ABI Selection.
(line 6)
* '.movsp' directive, ARM: ARM Directives. (line 167)
* '.nan' directive, MIPS: MIPS NaN Encodings. (line 6)
* '.nocmp' directive, TIC6X: TIC6X Directives. (line 47)
* '.no_pointers' directive, XStormy16: XStormy16 Directives.
(line 14)
* .o: Object. (line 6)
* '.object_arch' directive, ARM: ARM Directives. (line 172)
* '.packed' directive, ARM: ARM Directives. (line 178)
* '.pad' directive, ARM: ARM Directives. (line 183)
* '.param' on HPPA: HPPA Directives. (line 19)
* '.personality' directive, ARM: ARM Directives. (line 188)
* '.personality' directive, TIC6X: TIC6X Directives. (line 55)
* '.personalityindex' directive, ARM: ARM Directives. (line 191)
* '.personalityindex' directive, TIC6X: TIC6X Directives. (line 51)
* '.pool' directive, AArch64: AArch64 Directives. (line 38)
* '.pool' directive, ARM: ARM Directives. (line 195)
* '.quad' directive, s390: s390 Directives. (line 16)
* '.req' directive, AArch64: AArch64 Directives. (line 41)
* '.req' directive, ARM: ARM Directives. (line 198)
* '.require_canonical_reg_names' directive, TILE-Gx: TILE-Gx Directives.
(line 19)
* '.require_canonical_reg_names' directive, TILEPro: TILEPro Directives.
(line 19)
* '.save' directive, ARM: ARM Directives. (line 203)
* '.scomm' directive, TIC6X: TIC6X Directives. (line 58)
* '.secrel32' directive, ARM: ARM Directives. (line 241)
* '.set arch=CPU': MIPS ISA. (line 18)
* '.set at': MIPS Macros. (line 41)
* '.set at=REG': MIPS Macros. (line 35)
* '.set autoextend': MIPS autoextend. (line 6)
* '.set doublefloat': MIPS Floating-Point. (line 12)
* '.set dsp': MIPS ASE Instruction Generation Overrides.
(line 21)
* '.set dspr2': MIPS ASE Instruction Generation Overrides.
(line 26)
* '.set hardfloat': MIPS Floating-Point. (line 6)
* '.set insn32': MIPS assembly options.
(line 18)
* '.set macro': MIPS Macros. (line 30)
* '.set mcu': MIPS ASE Instruction Generation Overrides.
(line 36)
* '.set mdmx': MIPS ASE Instruction Generation Overrides.
(line 16)
* '.set mips3d': MIPS ASE Instruction Generation Overrides.
(line 6)
* '.set mipsN': MIPS ISA. (line 6)
* '.set msa': MIPS ASE Instruction Generation Overrides.
(line 41)
* '.set mt': MIPS ASE Instruction Generation Overrides.
(line 31)
* '.set noat': MIPS Macros. (line 41)
* '.set noautoextend': MIPS autoextend. (line 6)
* '.set nodsp': MIPS ASE Instruction Generation Overrides.
(line 21)
* '.set nodspr2': MIPS ASE Instruction Generation Overrides.
(line 26)
* '.set noinsn32': MIPS assembly options.
(line 18)
* '.set nomacro': MIPS Macros. (line 30)
* '.set nomcu': MIPS ASE Instruction Generation Overrides.
(line 36)
* '.set nomdmx': MIPS ASE Instruction Generation Overrides.
(line 16)
* '.set nomips3d': MIPS ASE Instruction Generation Overrides.
(line 6)
* '.set nomsa': MIPS ASE Instruction Generation Overrides.
(line 41)
* '.set nomt': MIPS ASE Instruction Generation Overrides.
(line 31)
* '.set nosmartmips': MIPS ASE Instruction Generation Overrides.
(line 11)
* '.set nosym32': MIPS Symbol Sizes. (line 6)
* '.set novirt': MIPS ASE Instruction Generation Overrides.
(line 46)
* '.set noxpa': MIPS ASE Instruction Generation Overrides.
(line 51)
* '.set pop': MIPS Option Stack. (line 6)
* '.set push': MIPS Option Stack. (line 6)
* '.set singlefloat': MIPS Floating-Point. (line 12)
* '.set smartmips': MIPS ASE Instruction Generation Overrides.
(line 11)
* '.set softfloat': MIPS Floating-Point. (line 6)
* '.set sym32': MIPS Symbol Sizes. (line 6)
* '.set virt': MIPS ASE Instruction Generation Overrides.
(line 46)
* '.set xpa': MIPS ASE Instruction Generation Overrides.
(line 51)
* '.setfp' directive, ARM: ARM Directives. (line 227)
* '.short' directive, s390: s390 Directives. (line 16)
* '.syntax' directive, ARM: ARM Directives. (line 246)
* '.thumb' directive, ARM: ARM Directives. (line 250)
* '.thumb_func' directive, ARM: ARM Directives. (line 253)
* '.thumb_set' directive, ARM: ARM Directives. (line 264)
* '.tlsdescseq' directive, ARM: ARM Directives. (line 271)
* '.unreq' directive, AArch64: AArch64 Directives. (line 46)
* '.unreq' directive, ARM: ARM Directives. (line 276)
* '.unwind_raw' directive, ARM: ARM Directives. (line 287)
* '.v850' directive, V850: V850 Directives. (line 14)
* '.v850e' directive, V850: V850 Directives. (line 20)
* '.v850e1' directive, V850: V850 Directives. (line 26)
* '.v850e2' directive, V850: V850 Directives. (line 32)
* '.v850e2v3' directive, V850: V850 Directives. (line 38)
* '.v850e2v4' directive, V850: V850 Directives. (line 44)
* '.v850e3v5' directive, V850: V850 Directives. (line 50)
* '.vsave' directive, ARM: ARM Directives. (line 294)
* .z8001: Z8000 Directives. (line 11)
* .z8002: Z8000 Directives. (line 15)
* 16-bit code, i386: i386-16bit. (line 6)
* '16bit_pointers' directive, XStormy16: XStormy16 Directives.
(line 6)
* '16byte' directive, Nios II: Nios II Directives. (line 28)
* '2byte' directive, ARC: ARC Directives. (line 9)
* '2byte' directive, Nios II: Nios II Directives. (line 19)
* '32bit_pointers' directive, XStormy16: XStormy16 Directives.
(line 10)
* '3byte' directive, ARC: ARC Directives. (line 12)
* 3DNow!, i386: i386-SIMD. (line 6)
* 3DNow!, x86-64: i386-SIMD. (line 6)
* 430 support: MSP430-Dependent. (line 6)
* '4byte' directive, ARC: ARC Directives. (line 15)
* '4byte' directive, Nios II: Nios II Directives. (line 22)
* '8byte' directive, Nios II: Nios II Directives. (line 25)
* ':' (label): Statements. (line 31)
* '@hi' pseudo-op, XStormy16: XStormy16 Opcodes. (line 21)
* '@lo' pseudo-op, XStormy16: XStormy16 Opcodes. (line 10)
* @word modifier, D10V: D10V-Word. (line 6)
* '\"' (doublequote character): Strings. (line 43)
* '\b' (backspace character): Strings. (line 15)
* '\DDD' (octal character code): Strings. (line 30)
* '\f' (formfeed character): Strings. (line 18)
* '\n' (newline character): Strings. (line 21)
* '\r' (carriage return character): Strings. (line 24)
* '\t' (tab): Strings. (line 27)
* '\XD...' (hex character code): Strings. (line 36)
* '\\' ('\' character): Strings. (line 40)
* _ opcode prefix: Xtensa Opcodes. (line 9)
* a.out: Object. (line 6)
* 'a.out' symbol attributes: a.out Symbols. (line 6)
* AArch64 floating point (IEEE): AArch64 Floating Point.
(line 6)
* AArch64 immediate character: AArch64-Chars. (line 13)
* AArch64 line comment character: AArch64-Chars. (line 6)
* AArch64 line separator: AArch64-Chars. (line 10)
* AArch64 machine directives: AArch64 Directives. (line 6)
* AArch64 opcodes: AArch64 Opcodes. (line 6)
* AArch64 options (none): AArch64 Options. (line 6)
* AArch64 register names: AArch64-Regs. (line 6)
* AArch64 relocations: AArch64-Relocations. (line 6)
* AArch64 support: AArch64-Dependent. (line 6)
* ABI options, SH64: SH64 Options. (line 25)
* 'abort' directive: Abort. (line 6)
* 'ABORT' directive: ABORT (COFF). (line 6)
* absolute section: Ld Sections. (line 29)
* 'absolute-literals' directive: Absolute Literals Directive.
(line 6)
* 'ADDI' instructions, relaxation: Xtensa Immediate Relaxation.
(line 43)
* addition, permitted arguments: Infix Ops. (line 45)
* addresses: Expressions. (line 6)
* addresses, format of: Secs Background. (line 65)
* addressing modes, D10V: D10V-Addressing. (line 6)
* addressing modes, D30V: D30V-Addressing. (line 6)
* addressing modes, H8/300: H8/300-Addressing. (line 6)
* addressing modes, M680x0: M68K-Syntax. (line 21)
* addressing modes, M68HC11: M68HC11-Syntax. (line 29)
* addressing modes, SH: SH-Addressing. (line 6)
* addressing modes, SH64: SH64-Addressing. (line 6)
* addressing modes, XGATE: XGATE-Syntax. (line 28)
* addressing modes, Z8000: Z8000-Addressing. (line 6)
* 'ADR reg,<label>' pseudo op, ARM: ARM Opcodes. (line 25)
* 'ADRL reg,<label>' pseudo op, ARM: ARM Opcodes. (line 35)
* ADRP, ADD, LDR/STR group relocations, AArch64: AArch64-Relocations.
(line 14)
* advancing location counter: Org. (line 6)
* 'align' directive: Align. (line 6)
* 'align' directive, Nios II: Nios II Directives. (line 6)
* 'align' directive, SPARC: Sparc-Directives. (line 9)
* 'align' directive, TIC54X: TIC54X-Directives. (line 6)
* aligned instruction bundle: Bundle directives. (line 6)
* alignment for NEON instructions: ARM-Neon-Alignment. (line 6)
* alignment of branch targets: Xtensa Automatic Alignment.
(line 6)
* alignment of 'LOOP' instructions: Xtensa Automatic Alignment.
(line 6)
* Alpha floating point (IEEE): Alpha Floating Point.
(line 6)
* Alpha line comment character: Alpha-Chars. (line 6)
* Alpha line separator: Alpha-Chars. (line 11)
* Alpha notes: Alpha Notes. (line 6)
* Alpha options: Alpha Options. (line 6)
* Alpha registers: Alpha-Regs. (line 6)
* Alpha relocations: Alpha-Relocs. (line 6)
* Alpha support: Alpha-Dependent. (line 6)
* Alpha Syntax: Alpha Options. (line 60)
* Alpha-only directives: Alpha Directives. (line 9)
* Altera Nios II support: NiosII-Dependent. (line 6)
* altered difference tables: Word. (line 12)
* alternate syntax for the 680x0: M68K-Moto-Syntax. (line 6)
* ARC floating point (IEEE): ARC Floating Point. (line 6)
* ARC line comment character: ARC-Chars. (line 6)
* ARC line separator: ARC-Chars. (line 12)
* ARC machine directives: ARC Directives. (line 6)
* ARC opcodes: ARC Opcodes. (line 6)
* ARC options (none): ARC Options. (line 6)
* ARC register names: ARC-Regs. (line 6)
* ARC support: ARC-Dependent. (line 6)
* 'arc5' arc5, ARC: ARC Options. (line 10)
* 'arc6' arc6, ARC: ARC Options. (line 13)
* 'arc7' arc7, ARC: ARC Options. (line 21)
* 'arc8' arc8, ARC: ARC Options. (line 24)
* arch directive, i386: i386-Arch. (line 6)
* 'arch' directive, M680x0: M68K-Directives. (line 22)
* 'arch' directive, MSP 430: MSP430 Directives. (line 18)
* arch directive, x86-64: i386-Arch. (line 6)
* architecture options, i960: Options-i960. (line 6)
* architecture options, IP2022: IP2K-Opts. (line 9)
* architecture options, IP2K: IP2K-Opts. (line 14)
* architecture options, M16C: M32C-Opts. (line 12)
* architecture options, M32C: M32C-Opts. (line 9)
* architecture options, M32R: M32R-Opts. (line 21)
* architecture options, M32R2: M32R-Opts. (line 17)
* architecture options, M32RX: M32R-Opts. (line 9)
* architecture options, M680x0: M68K-Opts. (line 99)
* Architecture variant option, CRIS: CRIS-Opts. (line 34)
* architectures, Meta: Meta Options. (line 6)
* architectures, PowerPC: PowerPC-Opts. (line 6)
* architectures, SCORE: SCORE-Opts. (line 6)
* architectures, SPARC: Sparc-Opts. (line 6)
* arguments for addition: Infix Ops. (line 45)
* arguments for subtraction: Infix Ops. (line 50)
* arguments in expressions: Arguments. (line 6)
* arithmetic functions: Operators. (line 6)
* arithmetic operands: Arguments. (line 6)
* ARM data relocations: ARM-Relocations. (line 6)
* ARM floating point (IEEE): ARM Floating Point. (line 6)
* ARM identifiers: ARM-Chars. (line 19)
* ARM immediate character: ARM-Chars. (line 17)
* ARM line comment character: ARM-Chars. (line 6)
* ARM line separator: ARM-Chars. (line 14)
* ARM machine directives: ARM Directives. (line 6)
* ARM opcodes: ARM Opcodes. (line 6)
* ARM options (none): ARM Options. (line 6)
* ARM register names: ARM-Regs. (line 6)
* ARM support: ARM-Dependent. (line 6)
* 'ascii' directive: Ascii. (line 6)
* 'asciz' directive: Asciz. (line 6)
* 'asg' directive, TIC54X: TIC54X-Directives. (line 18)
* assembler bugs, reporting: Bug Reporting. (line 6)
* assembler crash: Bug Criteria. (line 9)
* assembler directive .3byte, RX: RX-Directives. (line 9)
* assembler directive .arch, CRIS: CRIS-Pseudos. (line 50)
* assembler directive .dword, CRIS: CRIS-Pseudos. (line 12)
* assembler directive .far, M68HC11: M68HC11-Directives. (line 20)
* assembler directive .fetchalign, RX: RX-Directives. (line 13)
* assembler directive .interrupt, M68HC11: M68HC11-Directives.
(line 26)
* assembler directive .mode, M68HC11: M68HC11-Directives. (line 16)
* assembler directive .relax, M68HC11: M68HC11-Directives. (line 10)
* assembler directive .syntax, CRIS: CRIS-Pseudos. (line 18)
* assembler directive .xrefb, M68HC11: M68HC11-Directives. (line 31)
* assembler directive BSPEC, MMIX: MMIX-Pseudos. (line 137)
* assembler directive BYTE, MMIX: MMIX-Pseudos. (line 101)
* assembler directive ESPEC, MMIX: MMIX-Pseudos. (line 137)
* assembler directive GREG, MMIX: MMIX-Pseudos. (line 53)
* assembler directive IS, MMIX: MMIX-Pseudos. (line 44)
* assembler directive LOC, MMIX: MMIX-Pseudos. (line 7)
* assembler directive LOCAL, MMIX: MMIX-Pseudos. (line 29)
* assembler directive OCTA, MMIX: MMIX-Pseudos. (line 113)
* assembler directive PREFIX, MMIX: MMIX-Pseudos. (line 125)
* assembler directive TETRA, MMIX: MMIX-Pseudos. (line 113)
* assembler directive WYDE, MMIX: MMIX-Pseudos. (line 113)
* assembler directives, CRIS: CRIS-Pseudos. (line 6)
* assembler directives, M68HC11: M68HC11-Directives. (line 6)
* assembler directives, M68HC12: M68HC11-Directives. (line 6)
* assembler directives, MMIX: MMIX-Pseudos. (line 6)
* assembler directives, RL78: RL78-Directives. (line 6)
* assembler directives, RX: RX-Directives. (line 6)
* assembler directives, XGATE: XGATE-Directives. (line 6)
* assembler internal logic error: As Sections. (line 13)
* assembler version: v. (line 6)
* assembler, and linker: Secs Background. (line 10)
* assembly listings, enabling: a. (line 6)
* assigning values to symbols: Setting Symbols. (line 6)
* assigning values to symbols <1>: Equ. (line 6)
* 'at' register, MIPS: MIPS Macros. (line 35)
* 'atmp' directive, i860: Directives-i860. (line 16)
* attributes, symbol: Symbol Attributes. (line 6)
* att_syntax pseudo op, i386: i386-Variations. (line 6)
* att_syntax pseudo op, x86-64: i386-Variations. (line 6)
* auxiliary attributes, COFF symbols: COFF Symbols. (line 19)
* auxiliary symbol information, COFF: Dim. (line 6)
* AVR line comment character: AVR-Chars. (line 6)
* AVR line separator: AVR-Chars. (line 14)
* AVR modifiers: AVR-Modifiers. (line 6)
* AVR opcode summary: AVR Opcodes. (line 6)
* AVR options (none): AVR Options. (line 6)
* AVR register names: AVR-Regs. (line 6)
* AVR support: AVR-Dependent. (line 6)
* 'A_DIR' environment variable, TIC54X: TIC54X-Env. (line 6)
* backslash ('\\'): Strings. (line 40)
* backspace ('\b'): Strings. (line 15)
* 'balign' directive: Balign. (line 6)
* 'balignl' directive: Balign. (line 27)
* 'balignw' directive: Balign. (line 27)
* 'bes' directive, TIC54X: TIC54X-Directives. (line 194)
* big endian output, MIPS: Overview. (line 748)
* big endian output, PJ: Overview. (line 655)
* big-endian output, MIPS: MIPS Options. (line 13)
* big-endian output, TIC6X: TIC6X Options. (line 46)
* bignums: Bignums. (line 6)
* binary constants, TIC54X: TIC54X-Constants. (line 8)
* binary files, including: Incbin. (line 6)
* binary integers: Integers. (line 6)
* bit names, IA-64: IA-64-Bits. (line 6)
* bitfields, not supported on VAX: VAX-no. (line 6)
* Blackfin directives: Blackfin Directives. (line 6)
* Blackfin options (none): Blackfin Options. (line 6)
* Blackfin support: Blackfin-Dependent. (line 6)
* Blackfin syntax: Blackfin Syntax. (line 6)
* block: Z8000 Directives. (line 54)
* BMI, i386: i386-BMI. (line 6)
* BMI, x86-64: i386-BMI. (line 6)
* branch improvement, M680x0: M68K-Branch. (line 6)
* branch improvement, M68HC11: M68HC11-Branch. (line 6)
* branch improvement, VAX: VAX-branch. (line 6)
* branch instructions, relaxation: Xtensa Branch Relaxation.
(line 6)
* branch recording, i960: Options-i960. (line 22)
* branch statistics table, i960: Options-i960. (line 40)
* branch target alignment: Xtensa Automatic Alignment.
(line 6)
* 'break' directive, TIC54X: TIC54X-Directives. (line 141)
* BSD syntax: PDP-11-Syntax. (line 6)
* 'bss' directive, i960: Directives-i960. (line 6)
* 'bss' directive, TIC54X: TIC54X-Directives. (line 27)
* bss section: Ld Sections. (line 20)
* bss section <1>: bss. (line 6)
* bug criteria: Bug Criteria. (line 6)
* bug reports: Bug Reporting. (line 6)
* bugs in assembler: Reporting Bugs. (line 6)
* Built-in symbols, CRIS: CRIS-Symbols. (line 6)
* builtin math functions, TIC54X: TIC54X-Builtins. (line 6)
* builtin subsym functions, TIC54X: TIC54X-Macros. (line 16)
* bundle: Bundle directives. (line 6)
* bundle-locked: Bundle directives. (line 36)
* 'bundle_align_mode' directive: Bundle directives. (line 6)
* 'bundle_lock' directive: Bundle directives. (line 28)
* 'bundle_unlock' directive: Bundle directives. (line 28)
* bus lock prefixes, i386: i386-Prefixes. (line 36)
* bval: Z8000 Directives. (line 30)
* 'byte' directive: Byte. (line 6)
* 'byte' directive, TIC54X: TIC54X-Directives. (line 34)
* 'C54XDSP_DIR' environment variable, TIC54X: TIC54X-Env. (line 6)
* 'call' directive, Nios II: Nios II Relocations. (line 38)
* call instructions, i386: i386-Mnemonics. (line 55)
* call instructions, relaxation: Xtensa Call Relaxation.
(line 6)
* call instructions, x86-64: i386-Mnemonics. (line 55)
* 'callj', i960 pseudo-opcode: callj-i960. (line 6)
* 'call_hiadj' directive, Nios II: Nios II Relocations. (line 38)
* 'call_lo' directive, Nios II: Nios II Relocations. (line 38)
* carriage return ('\r'): Strings. (line 24)
* case sensitivity, Z80: Z80-Case. (line 6)
* 'cfi_endproc' directive: CFI directives. (line 26)
* 'cfi_sections' directive: CFI directives. (line 6)
* 'cfi_startproc' directive: CFI directives. (line 16)
* 'char' directive, TIC54X: TIC54X-Directives. (line 34)
* character constant, Z80: Z80-Chars. (line 20)
* character constants: Characters. (line 6)
* character escape codes: Strings. (line 15)
* character escapes, Z80: Z80-Chars. (line 18)
* character, single: Chars. (line 6)
* characters used in symbols: Symbol Intro. (line 6)
* 'clink' directive, TIC54X: TIC54X-Directives. (line 43)
* 'code16' directive, i386: i386-16bit. (line 6)
* 'code16gcc' directive, i386: i386-16bit. (line 6)
* 'code32' directive, i386: i386-16bit. (line 6)
* 'code64' directive, i386: i386-16bit. (line 6)
* 'code64' directive, x86-64: i386-16bit. (line 6)
* COFF auxiliary symbol information: Dim. (line 6)
* COFF structure debugging: Tag. (line 6)
* COFF symbol attributes: COFF Symbols. (line 6)
* COFF symbol descriptor: Desc. (line 6)
* COFF symbol storage class: Scl. (line 6)
* COFF symbol type: Type. (line 11)
* COFF symbols, debugging: Def. (line 6)
* COFF value attribute: Val. (line 6)
* COMDAT: Linkonce. (line 6)
* 'comm' directive: Comm. (line 6)
* command line conventions: Command Line. (line 6)
* command line options, V850: V850 Options. (line 9)
* command-line options ignored, VAX: VAX-Opts. (line 6)
* comment character, XStormy16: XStormy16-Chars. (line 11)
* comments: Comments. (line 6)
* comments, M680x0: M68K-Chars. (line 6)
* comments, removed by preprocessor: Preprocessing. (line 11)
* 'common' directive, SPARC: Sparc-Directives. (line 12)
* common sections: Linkonce. (line 6)
* common variable storage: bss. (line 6)
* compare and jump expansions, i960: Compare-and-branch-i960.
(line 13)
* compare/branch instructions, i960: Compare-and-branch-i960.
(line 6)
* comparison expressions: Infix Ops. (line 56)
* conditional assembly: If. (line 6)
* constant, single character: Chars. (line 6)
* constants: Constants. (line 6)
* constants, bignum: Bignums. (line 6)
* constants, character: Characters. (line 6)
* constants, converted by preprocessor: Preprocessing. (line 14)
* constants, floating point: Flonums. (line 6)
* constants, integer: Integers. (line 6)
* constants, number: Numbers. (line 6)
* constants, Sparc: Sparc-Constants. (line 6)
* constants, string: Strings. (line 6)
* constants, TIC54X: TIC54X-Constants. (line 6)
* conversion instructions, i386: i386-Mnemonics. (line 36)
* conversion instructions, x86-64: i386-Mnemonics. (line 36)
* coprocessor wait, i386: i386-Prefixes. (line 40)
* 'copy' directive, TIC54X: TIC54X-Directives. (line 52)
* 'cpu' directive, M680x0: M68K-Directives. (line 30)
* 'cpu' directive, MSP 430: MSP430 Directives. (line 22)
* CR16 line comment character: CR16-Chars. (line 6)
* CR16 line separator: CR16-Chars. (line 12)
* CR16 Operand Qualifiers: CR16 Operand Qualifiers.
(line 6)
* CR16 support: CR16-Dependent. (line 6)
* crash of assembler: Bug Criteria. (line 9)
* CRIS '--emulation=crisaout' command line option: CRIS-Opts. (line 9)
* CRIS '--emulation=criself' command line option: CRIS-Opts. (line 9)
* CRIS '--march=ARCHITECTURE' command line option: CRIS-Opts. (line 34)
* CRIS '--mul-bug-abort' command line option: CRIS-Opts. (line 63)
* CRIS '--no-mul-bug-abort' command line option: CRIS-Opts. (line 63)
* CRIS '--no-underscore' command line option: CRIS-Opts. (line 15)
* CRIS '--pic' command line option: CRIS-Opts. (line 27)
* CRIS '--underscore' command line option: CRIS-Opts. (line 15)
* CRIS '-N' command line option: CRIS-Opts. (line 59)
* CRIS architecture variant option: CRIS-Opts. (line 34)
* CRIS assembler directive .arch: CRIS-Pseudos. (line 50)
* CRIS assembler directive .dword: CRIS-Pseudos. (line 12)
* CRIS assembler directive .syntax: CRIS-Pseudos. (line 18)
* CRIS assembler directives: CRIS-Pseudos. (line 6)
* CRIS built-in symbols: CRIS-Symbols. (line 6)
* CRIS instruction expansion: CRIS-Expand. (line 6)
* CRIS line comment characters: CRIS-Chars. (line 6)
* CRIS options: CRIS-Opts. (line 6)
* CRIS position-independent code: CRIS-Opts. (line 27)
* CRIS pseudo-op .arch: CRIS-Pseudos. (line 50)
* CRIS pseudo-op .dword: CRIS-Pseudos. (line 12)
* CRIS pseudo-op .syntax: CRIS-Pseudos. (line 18)
* CRIS pseudo-ops: CRIS-Pseudos. (line 6)
* CRIS register names: CRIS-Regs. (line 6)
* CRIS support: CRIS-Dependent. (line 6)
* CRIS symbols in position-independent code: CRIS-Pic. (line 6)
* 'ctbp' register, V850: V850-Regs. (line 90)
* 'ctoff' pseudo-op, V850: V850 Opcodes. (line 110)
* 'ctpc' register, V850: V850-Regs. (line 82)
* 'ctpsw' register, V850: V850-Regs. (line 84)
* current address: Dot. (line 6)
* current address, advancing: Org. (line 6)
* 'c_mode' directive, TIC54X: TIC54X-Directives. (line 49)
* D10V @word modifier: D10V-Word. (line 6)
* D10V addressing modes: D10V-Addressing. (line 6)
* D10V floating point: D10V-Float. (line 6)
* D10V line comment character: D10V-Chars. (line 6)
* D10V opcode summary: D10V-Opcodes. (line 6)
* D10V optimization: Overview. (line 521)
* D10V options: D10V-Opts. (line 6)
* D10V registers: D10V-Regs. (line 6)
* D10V size modifiers: D10V-Size. (line 6)
* D10V sub-instruction ordering: D10V-Chars. (line 14)
* D10V sub-instructions: D10V-Subs. (line 6)
* D10V support: D10V-Dependent. (line 6)
* D10V syntax: D10V-Syntax. (line 6)
* D30V addressing modes: D30V-Addressing. (line 6)
* D30V floating point: D30V-Float. (line 6)
* D30V Guarded Execution: D30V-Guarded. (line 6)
* D30V line comment character: D30V-Chars. (line 6)
* D30V nops: Overview. (line 529)
* D30V nops after 32-bit multiply: Overview. (line 532)
* D30V opcode summary: D30V-Opcodes. (line 6)
* D30V optimization: Overview. (line 526)
* D30V options: D30V-Opts. (line 6)
* D30V registers: D30V-Regs. (line 6)
* D30V size modifiers: D30V-Size. (line 6)
* D30V sub-instruction ordering: D30V-Chars. (line 14)
* D30V sub-instructions: D30V-Subs. (line 6)
* D30V support: D30V-Dependent. (line 6)
* D30V syntax: D30V-Syntax. (line 6)
* data alignment on SPARC: Sparc-Aligned-Data. (line 6)
* data and text sections, joining: R. (line 6)
* 'data' directive: Data. (line 6)
* 'data' directive, TIC54X: TIC54X-Directives. (line 59)
* data relocations, ARM: ARM-Relocations. (line 6)
* data section: Ld Sections. (line 9)
* 'data1' directive, M680x0: M68K-Directives. (line 9)
* 'data2' directive, M680x0: M68K-Directives. (line 12)
* datalabel, SH64: SH64-Addressing. (line 16)
* 'dbpc' register, V850: V850-Regs. (line 86)
* 'dbpsw' register, V850: V850-Regs. (line 88)
* debuggers, and symbol order: Symbols. (line 10)
* debugging COFF symbols: Def. (line 6)
* DEC syntax: PDP-11-Syntax. (line 6)
* decimal integers: Integers. (line 12)
* 'def' directive: Def. (line 6)
* 'def' directive, TIC54X: TIC54X-Directives. (line 101)
* density instructions: Density Instructions.
(line 6)
* dependency tracking: MD. (line 6)
* deprecated directives: Deprecated. (line 6)
* 'desc' directive: Desc. (line 6)
* descriptor, of 'a.out' symbol: Symbol Desc. (line 6)
* 'dfloat' directive, VAX: VAX-directives. (line 9)
* difference tables altered: Word. (line 12)
* difference tables, warning: K. (line 6)
* differences, mmixal: MMIX-mmixal. (line 6)
* 'dim' directive: Dim. (line 6)
* directives and instructions: Statements. (line 20)
* directives for PowerPC: PowerPC-Pseudo. (line 6)
* directives for SCORE: SCORE-Pseudo. (line 6)
* directives, Blackfin: Blackfin Directives. (line 6)
* directives, M32R: M32R-Directives. (line 6)
* directives, M680x0: M68K-Directives. (line 6)
* directives, machine independent: Pseudo Ops. (line 6)
* directives, Xtensa: Xtensa Directives. (line 6)
* directives, Z8000: Z8000 Directives. (line 6)
* Disable floating-point instructions: MIPS Floating-Point. (line 6)
* Disable single-precision floating-point operations: MIPS Floating-Point.
(line 12)
* displacement sizing character, VAX: VAX-operands. (line 12)
* dollar local symbols: Symbol Names. (line 109)
* dot (symbol): Dot. (line 6)
* 'double' directive: Double. (line 6)
* 'double' directive, i386: i386-Float. (line 14)
* 'double' directive, M680x0: M68K-Float. (line 14)
* 'double' directive, M68HC11: M68HC11-Float. (line 14)
* 'double' directive, RX: RX-Float. (line 11)
* 'double' directive, TIC54X: TIC54X-Directives. (line 62)
* 'double' directive, VAX: VAX-float. (line 15)
* 'double' directive, x86-64: i386-Float. (line 14)
* 'double' directive, XGATE: XGATE-Float. (line 13)
* doublequote ('\"'): Strings. (line 43)
* 'drlist' directive, TIC54X: TIC54X-Directives. (line 71)
* 'drnolist' directive, TIC54X: TIC54X-Directives. (line 71)
* 'dual' directive, i860: Directives-i860. (line 6)
* 'dword' directive, Nios II: Nios II Directives. (line 16)
* 'EB' command line option, Nios II: Nios II Options. (line 22)
* 'ecr' register, V850: V850-Regs. (line 78)
* eight-byte integer: Quad. (line 9)
* 'eipc' register, V850: V850-Regs. (line 70)
* 'eipsw' register, V850: V850-Regs. (line 72)
* 'eject' directive: Eject. (line 6)
* 'EL' command line option, Nios II: Nios II Options. (line 25)
* ELF symbol type: Type. (line 22)
* 'else' directive: Else. (line 6)
* 'elseif' directive: Elseif. (line 6)
* empty expressions: Empty Exprs. (line 6)
* 'emsg' directive, TIC54X: TIC54X-Directives. (line 75)
* emulation: Overview. (line 930)
* encoding options, i386: i386-Mnemonics. (line 31)
* encoding options, x86-64: i386-Mnemonics. (line 31)
* 'end' directive: End. (line 6)
* 'enddual' directive, i860: Directives-i860. (line 11)
* 'endef' directive: Endef. (line 6)
* 'endfunc' directive: Endfunc. (line 6)
* endianness, MIPS: Overview. (line 748)
* endianness, PJ: Overview. (line 655)
* 'endif' directive: Endif. (line 6)
* 'endloop' directive, TIC54X: TIC54X-Directives. (line 141)
* 'endm' directive: Macro. (line 137)
* 'endm' directive, TIC54X: TIC54X-Directives. (line 151)
* 'endstruct' directive, TIC54X: TIC54X-Directives. (line 214)
* 'endunion' directive, TIC54X: TIC54X-Directives. (line 248)
* environment settings, TIC54X: TIC54X-Env. (line 6)
* EOF, newline must precede: Statements. (line 14)
* 'ep' register, V850: V850-Regs. (line 66)
* Epiphany line comment character: Epiphany-Chars. (line 6)
* Epiphany line separator: Epiphany-Chars. (line 14)
* Epiphany options: Epiphany Options. (line 6)
* Epiphany support: Epiphany-Dependent. (line 6)
* 'equ' directive: Equ. (line 6)
* 'equ' directive, TIC54X: TIC54X-Directives. (line 189)
* 'equiv' directive: Equiv. (line 6)
* 'eqv' directive: Eqv. (line 6)
* 'err' directive: Err. (line 6)
* error directive: Error. (line 6)
* error messages: Errors. (line 6)
* error on valid input: Bug Criteria. (line 12)
* errors, caused by warnings: W. (line 16)
* errors, continuing after: Z. (line 6)
* ESA/390 floating point (IEEE): ESA/390 Floating Point.
(line 6)
* ESA/390 support: ESA/390-Dependent. (line 6)
* ESA/390 Syntax: ESA/390 Options. (line 7)
* ESA/390-only directives: ESA/390 Directives. (line 12)
* escape codes, character: Strings. (line 15)
* 'eval' directive, TIC54X: TIC54X-Directives. (line 22)
* even: Z8000 Directives. (line 57)
* 'even' directive, M680x0: M68K-Directives. (line 15)
* 'even' directive, TIC54X: TIC54X-Directives. (line 6)
* 'exitm' directive: Macro. (line 140)
* expr (internal section): As Sections. (line 17)
* expression arguments: Arguments. (line 6)
* expressions: Expressions. (line 6)
* expressions, comparison: Infix Ops. (line 56)
* expressions, empty: Empty Exprs. (line 6)
* expressions, integer: Integer Exprs. (line 6)
* 'extAuxRegister' directive, ARC: ARC Directives. (line 18)
* 'extCondCode' directive, ARC: ARC Directives. (line 38)
* 'extCoreRegister' directive, ARC: ARC Directives. (line 50)
* 'extend' directive M680x0: M68K-Float. (line 17)
* 'extend' directive M68HC11: M68HC11-Float. (line 17)
* 'extend' directive XGATE: XGATE-Float. (line 16)
* 'extended' directive, i960: Directives-i960. (line 13)
* 'extern' directive: Extern. (line 6)
* 'extInstruction' directive, ARC: ARC Directives. (line 72)
* 'fail' directive: Fail. (line 6)
* 'far_mode' directive, TIC54X: TIC54X-Directives. (line 80)
* faster processing ('-f'): f. (line 6)
* fatal signal: Bug Criteria. (line 9)
* 'fclist' directive, TIC54X: TIC54X-Directives. (line 85)
* 'fcnolist' directive, TIC54X: TIC54X-Directives. (line 85)
* 'fepc' register, V850: V850-Regs. (line 74)
* 'fepsw' register, V850: V850-Regs. (line 76)
* 'ffloat' directive, VAX: VAX-directives. (line 13)
* 'field' directive, TIC54X: TIC54X-Directives. (line 89)
* 'file' directive: File. (line 6)
* 'file' directive, MSP 430: MSP430 Directives. (line 6)
* file name, logical: File. (line 13)
* files, including: Include. (line 6)
* files, input: Input Files. (line 6)
* 'fill' directive: Fill. (line 6)
* filling memory: Skip. (line 6)
* filling memory <1>: Space. (line 6)
* FLIX syntax: Xtensa Syntax. (line 6)
* 'float' directive: Float. (line 6)
* 'float' directive, i386: i386-Float. (line 14)
* 'float' directive, M680x0: M68K-Float. (line 11)
* 'float' directive, M68HC11: M68HC11-Float. (line 11)
* 'float' directive, RX: RX-Float. (line 8)
* 'float' directive, TIC54X: TIC54X-Directives. (line 62)
* 'float' directive, VAX: VAX-float. (line 15)
* 'float' directive, x86-64: i386-Float. (line 14)
* 'float' directive, XGATE: XGATE-Float. (line 10)
* floating point numbers: Flonums. (line 6)
* floating point numbers (double): Double. (line 6)
* floating point numbers (single): Float. (line 6)
* floating point numbers (single) <1>: Single. (line 6)
* floating point, AArch64 (IEEE): AArch64 Floating Point.
(line 6)
* floating point, Alpha (IEEE): Alpha Floating Point.
(line 6)
* floating point, ARC (IEEE): ARC Floating Point. (line 6)
* floating point, ARM (IEEE): ARM Floating Point. (line 6)
* floating point, D10V: D10V-Float. (line 6)
* floating point, D30V: D30V-Float. (line 6)
* floating point, ESA/390 (IEEE): ESA/390 Floating Point.
(line 6)
* floating point, H8/300 (IEEE): H8/300 Floating Point.
(line 6)
* floating point, HPPA (IEEE): HPPA Floating Point. (line 6)
* floating point, i386: i386-Float. (line 6)
* floating point, i960 (IEEE): Floating Point-i960. (line 6)
* floating point, M680x0: M68K-Float. (line 6)
* floating point, M68HC11: M68HC11-Float. (line 6)
* floating point, MSP 430 (IEEE): MSP430 Floating Point.
(line 6)
* floating point, RX: RX-Float. (line 6)
* floating point, s390: s390 Floating Point. (line 6)
* floating point, SH (IEEE): SH Floating Point. (line 6)
* floating point, SPARC (IEEE): Sparc-Float. (line 6)
* floating point, V850 (IEEE): V850 Floating Point. (line 6)
* floating point, VAX: VAX-float. (line 6)
* floating point, x86-64: i386-Float. (line 6)
* floating point, XGATE: XGATE-Float. (line 6)
* floating point, Z80: Z80 Floating Point. (line 6)
* flonums: Flonums. (line 6)
* format of error messages: Errors. (line 24)
* format of warning messages: Errors. (line 12)
* formfeed ('\f'): Strings. (line 18)
* 'func' directive: Func. (line 6)
* functions, in expressions: Operators. (line 6)
* 'gbr960', i960 postprocessor: Options-i960. (line 40)
* 'gfloat' directive, VAX: VAX-directives. (line 17)
* global: Z8000 Directives. (line 21)
* 'global' directive: Global. (line 6)
* 'global' directive, TIC54X: TIC54X-Directives. (line 101)
* 'got' directive, Nios II: Nios II Relocations. (line 38)
* 'gotoff' directive, Nios II: Nios II Relocations. (line 38)
* 'gotoff_hiadj' directive, Nios II: Nios II Relocations. (line 38)
* 'gotoff_lo' directive, Nios II: Nios II Relocations. (line 38)
* 'got_hiadj' directive, Nios II: Nios II Relocations. (line 38)
* 'got_lo' directive, Nios II: Nios II Relocations. (line 38)
* 'gp' register, MIPS: MIPS Small Data. (line 6)
* 'gp' register, V850: V850-Regs. (line 14)
* 'gprel' directive, Nios II: Nios II Relocations. (line 26)
* grouping data: Sub-Sections. (line 6)
* H8/300 addressing modes: H8/300-Addressing. (line 6)
* H8/300 floating point (IEEE): H8/300 Floating Point.
(line 6)
* H8/300 line comment character: H8/300-Chars. (line 6)
* H8/300 line separator: H8/300-Chars. (line 8)
* H8/300 machine directives (none): H8/300 Directives. (line 6)
* H8/300 opcode summary: H8/300 Opcodes. (line 6)
* H8/300 options: H8/300 Options. (line 6)
* H8/300 registers: H8/300-Regs. (line 6)
* H8/300 size suffixes: H8/300 Opcodes. (line 160)
* H8/300 support: H8/300-Dependent. (line 6)
* H8/300H, assembling for: H8/300 Directives. (line 8)
* 'half' directive, ARC: ARC Directives. (line 144)
* 'half' directive, Nios II: Nios II Directives. (line 10)
* 'half' directive, SPARC: Sparc-Directives. (line 17)
* 'half' directive, TIC54X: TIC54X-Directives. (line 109)
* hex character code ('\XD...'): Strings. (line 36)
* hexadecimal integers: Integers. (line 15)
* hexadecimal prefix, Z80: Z80-Chars. (line 15)
* 'hfloat' directive, VAX: VAX-directives. (line 21)
* 'hi' directive, Nios II: Nios II Relocations. (line 20)
* 'hi' pseudo-op, V850: V850 Opcodes. (line 33)
* 'hi0' pseudo-op, V850: V850 Opcodes. (line 10)
* 'hiadj' directive, Nios II: Nios II Relocations. (line 6)
* 'hidden' directive: Hidden. (line 6)
* 'high' directive, M32R: M32R-Directives. (line 18)
* 'hilo' pseudo-op, V850: V850 Opcodes. (line 55)
* HPPA directives not supported: HPPA Directives. (line 11)
* HPPA floating point (IEEE): HPPA Floating Point. (line 6)
* HPPA Syntax: HPPA Options. (line 7)
* HPPA-only directives: HPPA Directives. (line 24)
* 'hword' directive: hword. (line 6)
* i370 support: ESA/390-Dependent. (line 6)
* i386 16-bit code: i386-16bit. (line 6)
* i386 arch directive: i386-Arch. (line 6)
* i386 att_syntax pseudo op: i386-Variations. (line 6)
* i386 conversion instructions: i386-Mnemonics. (line 36)
* i386 floating point: i386-Float. (line 6)
* i386 immediate operands: i386-Variations. (line 15)
* i386 instruction naming: i386-Mnemonics. (line 6)
* i386 instruction prefixes: i386-Prefixes. (line 6)
* i386 intel_syntax pseudo op: i386-Variations. (line 6)
* i386 jump optimization: i386-Jumps. (line 6)
* i386 jump, call, return: i386-Variations. (line 40)
* i386 jump/call operands: i386-Variations. (line 15)
* i386 line comment character: i386-Chars. (line 6)
* i386 line separator: i386-Chars. (line 18)
* i386 memory references: i386-Memory. (line 6)
* i386 mnemonic compatibility: i386-Mnemonics. (line 61)
* i386 'mul', 'imul' instructions: i386-Notes. (line 6)
* i386 options: i386-Options. (line 6)
* i386 register operands: i386-Variations. (line 15)
* i386 registers: i386-Regs. (line 6)
* i386 sections: i386-Variations. (line 46)
* i386 size suffixes: i386-Variations. (line 28)
* i386 source, destination operands: i386-Variations. (line 21)
* i386 support: i386-Dependent. (line 6)
* i386 syntax compatibility: i386-Variations. (line 6)
* i80386 support: i386-Dependent. (line 6)
* i860 line comment character: i860-Chars. (line 6)
* i860 line separator: i860-Chars. (line 14)
* i860 machine directives: Directives-i860. (line 6)
* i860 opcodes: Opcodes for i860. (line 6)
* i860 support: i860-Dependent. (line 6)
* i960 architecture options: Options-i960. (line 6)
* i960 branch recording: Options-i960. (line 22)
* i960 'callj' pseudo-opcode: callj-i960. (line 6)
* i960 compare and jump expansions: Compare-and-branch-i960.
(line 13)
* i960 compare/branch instructions: Compare-and-branch-i960.
(line 6)
* i960 floating point (IEEE): Floating Point-i960. (line 6)
* i960 line comment character: i960-Chars. (line 6)
* i960 line separator: i960-Chars. (line 14)
* i960 machine directives: Directives-i960. (line 6)
* i960 opcodes: Opcodes for i960. (line 6)
* i960 options: Options-i960. (line 6)
* i960 support: i960-Dependent. (line 6)
* IA-64 line comment character: IA-64-Chars. (line 6)
* IA-64 line separator: IA-64-Chars. (line 8)
* IA-64 options: IA-64 Options. (line 6)
* IA-64 Processor-status-Register bit names: IA-64-Bits. (line 6)
* IA-64 registers: IA-64-Regs. (line 6)
* IA-64 relocations: IA-64-Relocs. (line 6)
* IA-64 support: IA-64-Dependent. (line 6)
* IA-64 Syntax: IA-64 Options. (line 85)
* 'ident' directive: Ident. (line 6)
* identifiers, ARM: ARM-Chars. (line 19)
* identifiers, MSP 430: MSP430-Chars. (line 17)
* 'if' directive: If. (line 6)
* 'ifb' directive: If. (line 21)
* 'ifc' directive: If. (line 25)
* 'ifdef' directive: If. (line 16)
* 'ifeq' directive: If. (line 33)
* 'ifeqs' directive: If. (line 36)
* 'ifge' directive: If. (line 40)
* 'ifgt' directive: If. (line 44)
* 'ifle' directive: If. (line 48)
* 'iflt' directive: If. (line 52)
* 'ifnb' directive: If. (line 56)
* 'ifnc' directive: If. (line 61)
* 'ifndef' directive: If. (line 65)
* 'ifne' directive: If. (line 72)
* 'ifnes' directive: If. (line 76)
* 'ifnotdef' directive: If. (line 65)
* immediate character, AArch64: AArch64-Chars. (line 13)
* immediate character, ARM: ARM-Chars. (line 17)
* immediate character, M680x0: M68K-Chars. (line 13)
* immediate character, VAX: VAX-operands. (line 6)
* immediate fields, relaxation: Xtensa Immediate Relaxation.
(line 6)
* immediate operands, i386: i386-Variations. (line 15)
* immediate operands, x86-64: i386-Variations. (line 15)
* 'imul' instruction, i386: i386-Notes. (line 6)
* 'imul' instruction, x86-64: i386-Notes. (line 6)
* 'incbin' directive: Incbin. (line 6)
* 'include' directive: Include. (line 6)
* 'include' directive search path: I. (line 6)
* indirect character, VAX: VAX-operands. (line 9)
* infix operators: Infix Ops. (line 6)
* inhibiting interrupts, i386: i386-Prefixes. (line 36)
* input: Input Files. (line 6)
* input file linenumbers: Input Files. (line 35)
* instruction aliases, s390: s390 Aliases. (line 6)
* instruction bundle: Bundle directives. (line 6)
* instruction expansion, CRIS: CRIS-Expand. (line 6)
* instruction expansion, MMIX: MMIX-Expand. (line 6)
* instruction formats, s390: s390 Formats. (line 6)
* instruction marker, s390: s390 Instruction Marker.
(line 6)
* instruction mnemonics, s390: s390 Mnemonics. (line 6)
* instruction naming, i386: i386-Mnemonics. (line 6)
* instruction naming, x86-64: i386-Mnemonics. (line 6)
* instruction operand modifier, s390: s390 Operand Modifier.
(line 6)
* instruction operands, s390: s390 Operands. (line 6)
* instruction prefixes, i386: i386-Prefixes. (line 6)
* instruction set, M680x0: M68K-opcodes. (line 6)
* instruction set, M68HC11: M68HC11-opcodes. (line 6)
* instruction set, XGATE: XGATE-opcodes. (line 5)
* instruction summary, AVR: AVR Opcodes. (line 6)
* instruction summary, D10V: D10V-Opcodes. (line 6)
* instruction summary, D30V: D30V-Opcodes. (line 6)
* instruction summary, H8/300: H8/300 Opcodes. (line 6)
* instruction summary, LM32: LM32 Opcodes. (line 6)
* instruction summary, SH: SH Opcodes. (line 6)
* instruction summary, SH64: SH64 Opcodes. (line 6)
* instruction summary, Z8000: Z8000 Opcodes. (line 6)
* instruction syntax, s390: s390 Syntax. (line 6)
* instructions and directives: Statements. (line 20)
* 'int' directive: Int. (line 6)
* 'int' directive, H8/300: H8/300 Directives. (line 6)
* 'int' directive, i386: i386-Float. (line 21)
* 'int' directive, TIC54X: TIC54X-Directives. (line 109)
* 'int' directive, x86-64: i386-Float. (line 21)
* integer expressions: Integer Exprs. (line 6)
* integer, 16-byte: Octa. (line 6)
* integer, 8-byte: Quad. (line 9)
* integers: Integers. (line 6)
* integers, 16-bit: hword. (line 6)
* integers, 32-bit: Int. (line 6)
* integers, binary: Integers. (line 6)
* integers, decimal: Integers. (line 12)
* integers, hexadecimal: Integers. (line 15)
* integers, octal: Integers. (line 9)
* integers, one byte: Byte. (line 6)
* intel_syntax pseudo op, i386: i386-Variations. (line 6)
* intel_syntax pseudo op, x86-64: i386-Variations. (line 6)
* internal assembler sections: As Sections. (line 6)
* 'internal' directive: Internal. (line 6)
* invalid input: Bug Criteria. (line 14)
* invocation summary: Overview. (line 6)
* IP2K architecture options: IP2K-Opts. (line 9)
* IP2K architecture options <1>: IP2K-Opts. (line 14)
* IP2K line comment character: IP2K-Chars. (line 6)
* IP2K line separator: IP2K-Chars. (line 14)
* IP2K options: IP2K-Opts. (line 6)
* IP2K support: IP2K-Dependent. (line 6)
* 'irp' directive: Irp. (line 6)
* 'irpc' directive: Irpc. (line 6)
* ISA options, SH64: SH64 Options. (line 6)
* joining text and data sections: R. (line 6)
* jump instructions, i386: i386-Mnemonics. (line 55)
* jump instructions, relaxation: Xtensa Jump Relaxation.
(line 6)
* jump instructions, x86-64: i386-Mnemonics. (line 55)
* jump optimization, i386: i386-Jumps. (line 6)
* jump optimization, x86-64: i386-Jumps. (line 6)
* jump/call operands, i386: i386-Variations. (line 15)
* jump/call operands, x86-64: i386-Variations. (line 15)
* 'L16SI' instructions, relaxation: Xtensa Immediate Relaxation.
(line 23)
* 'L16UI' instructions, relaxation: Xtensa Immediate Relaxation.
(line 23)
* 'L32I' instructions, relaxation: Xtensa Immediate Relaxation.
(line 23)
* 'L8UI' instructions, relaxation: Xtensa Immediate Relaxation.
(line 23)
* label (':'): Statements. (line 31)
* 'label' directive, TIC54X: TIC54X-Directives. (line 121)
* labels: Labels. (line 6)
* 'lcomm' directive: Lcomm. (line 6)
* 'lcomm' directive, COFF: i386-Directives. (line 6)
* ld: Object. (line 15)
* 'ldouble' directive M680x0: M68K-Float. (line 17)
* 'ldouble' directive M68HC11: M68HC11-Float. (line 17)
* 'ldouble' directive XGATE: XGATE-Float. (line 16)
* 'ldouble' directive, TIC54X: TIC54X-Directives. (line 62)
* 'LDR reg,=<expr>' pseudo op, AArch64: AArch64 Opcodes. (line 9)
* 'LDR reg,=<label>' pseudo op, ARM: ARM Opcodes. (line 15)
* 'leafproc' directive, i960: Directives-i960. (line 18)
* 'length' directive, TIC54X: TIC54X-Directives. (line 125)
* length of symbols: Symbol Intro. (line 14)
* 'lflags' directive (ignored): Lflags. (line 6)
* line comment character: Comments. (line 19)
* line comment character, AArch64: AArch64-Chars. (line 6)
* line comment character, Alpha: Alpha-Chars. (line 6)
* line comment character, ARC: ARC-Chars. (line 6)
* line comment character, ARM: ARM-Chars. (line 6)
* line comment character, AVR: AVR-Chars. (line 6)
* line comment character, CR16: CR16-Chars. (line 6)
* line comment character, D10V: D10V-Chars. (line 6)
* line comment character, D30V: D30V-Chars. (line 6)
* line comment character, Epiphany: Epiphany-Chars. (line 6)
* line comment character, H8/300: H8/300-Chars. (line 6)
* line comment character, i386: i386-Chars. (line 6)
* line comment character, i860: i860-Chars. (line 6)
* line comment character, i960: i960-Chars. (line 6)
* line comment character, IA-64: IA-64-Chars. (line 6)
* line comment character, IP2K: IP2K-Chars. (line 6)
* line comment character, LM32: LM32-Chars. (line 6)
* line comment character, M32C: M32C-Chars. (line 6)
* line comment character, M680x0: M68K-Chars. (line 6)
* line comment character, M68HC11: M68HC11-Syntax. (line 17)
* line comment character, Meta: Meta-Chars. (line 6)
* line comment character, MicroBlaze: MicroBlaze-Chars. (line 6)
* line comment character, MIPS: MIPS-Chars. (line 6)
* line comment character, MSP 430: MSP430-Chars. (line 6)
* line comment character, Nios II: Nios II Chars. (line 6)
* line comment character, NS32K: NS32K-Chars. (line 6)
* line comment character, PJ: PJ-Chars. (line 6)
* line comment character, PowerPC: PowerPC-Chars. (line 6)
* line comment character, RL78: RL78-Chars. (line 6)
* line comment character, RX: RX-Chars. (line 6)
* line comment character, s390: s390 Characters. (line 6)
* line comment character, SCORE: SCORE-Chars. (line 6)
* line comment character, SH: SH-Chars. (line 6)
* line comment character, SH64: SH64-Chars. (line 6)
* line comment character, Sparc: Sparc-Chars. (line 6)
* line comment character, TIC54X: TIC54X-Chars. (line 6)
* line comment character, TIC6X: TIC6X Syntax. (line 6)
* line comment character, V850: V850-Chars. (line 6)
* line comment character, VAX: VAX-Chars. (line 6)
* line comment character, XGATE: XGATE-Syntax. (line 16)
* line comment character, XStormy16: XStormy16-Chars. (line 6)
* line comment character, Z80: Z80-Chars. (line 6)
* line comment character, Z8000: Z8000-Chars. (line 6)
* line comment characters, CRIS: CRIS-Chars. (line 6)
* line comment characters, MMIX: MMIX-Chars. (line 6)
* 'line' directive: Line. (line 6)
* 'line' directive, MSP 430: MSP430 Directives. (line 14)
* line numbers, in input files: Input Files. (line 35)
* line numbers, in warnings/errors: Errors. (line 16)
* line separator character: Statements. (line 6)
* line separator character, Nios II: Nios II Chars. (line 6)
* line separator, AArch64: AArch64-Chars. (line 10)
* line separator, Alpha: Alpha-Chars. (line 11)
* line separator, ARC: ARC-Chars. (line 12)
* line separator, ARM: ARM-Chars. (line 14)
* line separator, AVR: AVR-Chars. (line 14)
* line separator, CR16: CR16-Chars. (line 12)
* line separator, Epiphany: Epiphany-Chars. (line 14)
* line separator, H8/300: H8/300-Chars. (line 8)
* line separator, i386: i386-Chars. (line 18)
* line separator, i860: i860-Chars. (line 14)
* line separator, i960: i960-Chars. (line 14)
* line separator, IA-64: IA-64-Chars. (line 8)
* line separator, IP2K: IP2K-Chars. (line 14)
* line separator, LM32: LM32-Chars. (line 12)
* line separator, M32C: M32C-Chars. (line 14)
* line separator, M680x0: M68K-Chars. (line 20)
* line separator, M68HC11: M68HC11-Syntax. (line 26)
* line separator, Meta: Meta-Chars. (line 8)
* line separator, MicroBlaze: MicroBlaze-Chars. (line 14)
* line separator, MIPS: MIPS-Chars. (line 14)
* line separator, MSP 430: MSP430-Chars. (line 14)
* line separator, NS32K: NS32K-Chars. (line 18)
* line separator, PJ: PJ-Chars. (line 14)
* line separator, PowerPC: PowerPC-Chars. (line 18)
* line separator, RL78: RL78-Chars. (line 14)
* line separator, RX: RX-Chars. (line 14)
* line separator, s390: s390 Characters. (line 13)
* line separator, SCORE: SCORE-Chars. (line 14)
* line separator, SH: SH-Chars. (line 8)
* line separator, SH64: SH64-Chars. (line 13)
* line separator, Sparc: Sparc-Chars. (line 14)
* line separator, TIC54X: TIC54X-Chars. (line 17)
* line separator, TIC6X: TIC6X Syntax. (line 13)
* line separator, V850: V850-Chars. (line 13)
* line separator, VAX: VAX-Chars. (line 14)
* line separator, XGATE: XGATE-Syntax. (line 25)
* line separator, XStormy16: XStormy16-Chars. (line 14)
* line separator, Z80: Z80-Chars. (line 13)
* line separator, Z8000: Z8000-Chars. (line 13)
* lines starting with '#': Comments. (line 33)
* linker: Object. (line 15)
* linker, and assembler: Secs Background. (line 10)
* 'linkonce' directive: Linkonce. (line 6)
* 'list' directive: List. (line 6)
* 'list' directive, TIC54X: TIC54X-Directives. (line 129)
* listing control, turning off: Nolist. (line 6)
* listing control, turning on: List. (line 6)
* listing control: new page: Eject. (line 6)
* listing control: paper size: Psize. (line 6)
* listing control: subtitle: Sbttl. (line 6)
* listing control: title line: Title. (line 6)
* listings, enabling: a. (line 6)
* 'literal' directive: Literal Directive. (line 6)
* literal pool entries, s390: s390 Literal Pool Entries.
(line 6)
* 'literal_position' directive: Literal Position Directive.
(line 6)
* 'literal_prefix' directive: Literal Prefix Directive.
(line 6)
* little endian output, MIPS: Overview. (line 751)
* little endian output, PJ: Overview. (line 658)
* little-endian output, MIPS: MIPS Options. (line 13)
* little-endian output, TIC6X: TIC6X Options. (line 46)
* LM32 line comment character: LM32-Chars. (line 6)
* LM32 line separator: LM32-Chars. (line 12)
* LM32 modifiers: LM32-Modifiers. (line 6)
* LM32 opcode summary: LM32 Opcodes. (line 6)
* LM32 options (none): LM32 Options. (line 6)
* LM32 register names: LM32-Regs. (line 6)
* LM32 support: LM32-Dependent. (line 6)
* 'ln' directive: Ln. (line 6)
* 'lo' directive, Nios II: Nios II Relocations. (line 23)
* 'lo' pseudo-op, V850: V850 Opcodes. (line 22)
* 'loc' directive: Loc. (line 6)
* local common symbols: Lcomm. (line 6)
* 'local' directive: Local. (line 6)
* local labels: Symbol Names. (line 40)
* local symbol names: Symbol Names. (line 27)
* local symbols, retaining in output: L. (line 6)
* location counter: Dot. (line 6)
* location counter, advancing: Org. (line 6)
* location counter, Z80: Z80-Chars. (line 15)
* 'loc_mark_labels' directive: Loc_mark_labels. (line 6)
* logical file name: File. (line 13)
* logical line number: Line. (line 6)
* logical line numbers: Comments. (line 33)
* 'long' directive: Long. (line 6)
* 'long' directive, ARC: ARC Directives. (line 147)
* 'long' directive, i386: i386-Float. (line 21)
* 'long' directive, TIC54X: TIC54X-Directives. (line 133)
* 'long' directive, x86-64: i386-Float. (line 21)
* 'longcall' pseudo-op, V850: V850 Opcodes. (line 122)
* 'longcalls' directive: Longcalls Directive. (line 6)
* 'longjump' pseudo-op, V850: V850 Opcodes. (line 128)
* 'loop' directive, TIC54X: TIC54X-Directives. (line 141)
* 'LOOP' instructions, alignment: Xtensa Automatic Alignment.
(line 6)
* 'low' directive, M32R: M32R-Directives. (line 9)
* 'lp' register, V850: V850-Regs. (line 68)
* lval: Z8000 Directives. (line 27)
* LWP, i386: i386-LWP. (line 6)
* LWP, x86-64: i386-LWP. (line 6)
* M16C architecture option: M32C-Opts. (line 12)
* M32C architecture option: M32C-Opts. (line 9)
* M32C line comment character: M32C-Chars. (line 6)
* M32C line separator: M32C-Chars. (line 14)
* M32C modifiers: M32C-Modifiers. (line 6)
* M32C options: M32C-Opts. (line 6)
* M32C support: M32C-Dependent. (line 6)
* M32R architecture options: M32R-Opts. (line 9)
* M32R architecture options <1>: M32R-Opts. (line 17)
* M32R architecture options <2>: M32R-Opts. (line 21)
* M32R directives: M32R-Directives. (line 6)
* M32R options: M32R-Opts. (line 6)
* M32R support: M32R-Dependent. (line 6)
* M32R warnings: M32R-Warnings. (line 6)
* M680x0 addressing modes: M68K-Syntax. (line 21)
* M680x0 architecture options: M68K-Opts. (line 99)
* M680x0 branch improvement: M68K-Branch. (line 6)
* M680x0 directives: M68K-Directives. (line 6)
* M680x0 floating point: M68K-Float. (line 6)
* M680x0 immediate character: M68K-Chars. (line 13)
* M680x0 line comment character: M68K-Chars. (line 6)
* M680x0 line separator: M68K-Chars. (line 20)
* M680x0 opcodes: M68K-opcodes. (line 6)
* M680x0 options: M68K-Opts. (line 6)
* M680x0 pseudo-opcodes: M68K-Branch. (line 6)
* M680x0 size modifiers: M68K-Syntax. (line 8)
* M680x0 support: M68K-Dependent. (line 6)
* M680x0 syntax: M68K-Syntax. (line 8)
* M68HC11 addressing modes: M68HC11-Syntax. (line 29)
* M68HC11 and M68HC12 support: M68HC11-Dependent. (line 6)
* M68HC11 assembler directive .far: M68HC11-Directives. (line 20)
* M68HC11 assembler directive .interrupt: M68HC11-Directives. (line 26)
* M68HC11 assembler directive .mode: M68HC11-Directives. (line 16)
* M68HC11 assembler directive .relax: M68HC11-Directives. (line 10)
* M68HC11 assembler directive .xrefb: M68HC11-Directives. (line 31)
* M68HC11 assembler directives: M68HC11-Directives. (line 6)
* M68HC11 branch improvement: M68HC11-Branch. (line 6)
* M68HC11 floating point: M68HC11-Float. (line 6)
* M68HC11 line comment character: M68HC11-Syntax. (line 17)
* M68HC11 line separator: M68HC11-Syntax. (line 26)
* M68HC11 modifiers: M68HC11-Modifiers. (line 6)
* M68HC11 opcodes: M68HC11-opcodes. (line 6)
* M68HC11 options: M68HC11-Opts. (line 6)
* M68HC11 pseudo-opcodes: M68HC11-Branch. (line 6)
* M68HC11 syntax: M68HC11-Syntax. (line 6)
* M68HC12 assembler directives: M68HC11-Directives. (line 6)
* machine dependencies: Machine Dependencies.
(line 6)
* machine directives, AArch64: AArch64 Directives. (line 6)
* machine directives, ARC: ARC Directives. (line 6)
* machine directives, ARM: ARM Directives. (line 6)
* machine directives, H8/300 (none): H8/300 Directives. (line 6)
* machine directives, i860: Directives-i860. (line 6)
* machine directives, i960: Directives-i960. (line 6)
* machine directives, MSP 430: MSP430 Directives. (line 6)
* machine directives, Nios II: Nios II Directives. (line 6)
* machine directives, SH: SH Directives. (line 6)
* machine directives, SH64: SH64 Directives. (line 9)
* machine directives, SPARC: Sparc-Directives. (line 6)
* machine directives, TIC54X: TIC54X-Directives. (line 6)
* machine directives, TIC6X: TIC6X Directives. (line 6)
* machine directives, TILE-Gx: TILE-Gx Directives. (line 6)
* machine directives, TILEPro: TILEPro Directives. (line 6)
* machine directives, V850: V850 Directives. (line 6)
* machine directives, VAX: VAX-directives. (line 6)
* machine directives, x86: i386-Directives. (line 6)
* machine directives, XStormy16: XStormy16 Directives.
(line 6)
* machine independent directives: Pseudo Ops. (line 6)
* machine instructions (not covered): Manual. (line 14)
* machine relocations, Nios II: Nios II Relocations. (line 6)
* machine-independent syntax: Syntax. (line 6)
* 'macro' directive: Macro. (line 28)
* 'macro' directive, TIC54X: TIC54X-Directives. (line 151)
* macros: Macro. (line 6)
* macros, count executed: Macro. (line 142)
* Macros, MSP 430: MSP430-Macros. (line 6)
* macros, TIC54X: TIC54X-Macros. (line 6)
* make rules: MD. (line 6)
* manual, structure and purpose: Manual. (line 6)
* math builtins, TIC54X: TIC54X-Builtins. (line 6)
* Maximum number of continuation lines: listing. (line 34)
* memory references, i386: i386-Memory. (line 6)
* memory references, x86-64: i386-Memory. (line 6)
* memory-mapped registers, TIC54X: TIC54X-MMRegs. (line 6)
* merging text and data sections: R. (line 6)
* messages from assembler: Errors. (line 6)
* Meta architectures: Meta Options. (line 6)
* Meta line comment character: Meta-Chars. (line 6)
* Meta line separator: Meta-Chars. (line 8)
* Meta options: Meta Options. (line 6)
* Meta registers: Meta-Regs. (line 6)
* Meta support: Meta-Dependent. (line 6)
* MicroBlaze architectures: MicroBlaze-Dependent.
(line 6)
* MicroBlaze directives: MicroBlaze Directives.
(line 6)
* MicroBlaze line comment character: MicroBlaze-Chars. (line 6)
* MicroBlaze line separator: MicroBlaze-Chars. (line 14)
* MicroBlaze support: MicroBlaze-Dependent.
(line 12)
* minus, permitted arguments: Infix Ops. (line 50)
* MIPS 32-bit microMIPS instruction generation override: MIPS assembly options.
(line 18)
* MIPS architecture options: MIPS Options. (line 29)
* MIPS big-endian output: MIPS Options. (line 13)
* MIPS CPU override: MIPS ISA. (line 18)
* MIPS directives to override command line options: MIPS assembly options.
(line 6)
* MIPS DSP Release 1 instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 21)
* MIPS DSP Release 2 instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 26)
* MIPS endianness: Overview. (line 748)
* MIPS eXtended Physical Address (XPA) instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 51)
* MIPS IEEE 754 NaN data encoding selection: MIPS NaN Encodings.
(line 6)
* MIPS ISA: Overview. (line 754)
* MIPS ISA override: MIPS ISA. (line 6)
* MIPS line comment character: MIPS-Chars. (line 6)
* MIPS line separator: MIPS-Chars. (line 14)
* MIPS little-endian output: MIPS Options. (line 13)
* MIPS MCU instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 36)
* MIPS MDMX instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 16)
* MIPS MIPS-3D instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 6)
* MIPS MT instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 31)
* MIPS option stack: MIPS Option Stack. (line 6)
* MIPS processor: MIPS-Dependent. (line 6)
* MIPS SIMD Architecture instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 41)
* MIT: M68K-Syntax. (line 6)
* 'mlib' directive, TIC54X: TIC54X-Directives. (line 157)
* 'mlist' directive, TIC54X: TIC54X-Directives. (line 162)
* MMIX assembler directive BSPEC: MMIX-Pseudos. (line 137)
* MMIX assembler directive BYTE: MMIX-Pseudos. (line 101)
* MMIX assembler directive ESPEC: MMIX-Pseudos. (line 137)
* MMIX assembler directive GREG: MMIX-Pseudos. (line 53)
* MMIX assembler directive IS: MMIX-Pseudos. (line 44)
* MMIX assembler directive LOC: MMIX-Pseudos. (line 7)
* MMIX assembler directive LOCAL: MMIX-Pseudos. (line 29)
* MMIX assembler directive OCTA: MMIX-Pseudos. (line 113)
* MMIX assembler directive PREFIX: MMIX-Pseudos. (line 125)
* MMIX assembler directive TETRA: MMIX-Pseudos. (line 113)
* MMIX assembler directive WYDE: MMIX-Pseudos. (line 113)
* MMIX assembler directives: MMIX-Pseudos. (line 6)
* MMIX line comment characters: MMIX-Chars. (line 6)
* MMIX options: MMIX-Opts. (line 6)
* MMIX pseudo-op BSPEC: MMIX-Pseudos. (line 137)
* MMIX pseudo-op BYTE: MMIX-Pseudos. (line 101)
* MMIX pseudo-op ESPEC: MMIX-Pseudos. (line 137)
* MMIX pseudo-op GREG: MMIX-Pseudos. (line 53)
* MMIX pseudo-op IS: MMIX-Pseudos. (line 44)
* MMIX pseudo-op LOC: MMIX-Pseudos. (line 7)
* MMIX pseudo-op LOCAL: MMIX-Pseudos. (line 29)
* MMIX pseudo-op OCTA: MMIX-Pseudos. (line 113)
* MMIX pseudo-op PREFIX: MMIX-Pseudos. (line 125)
* MMIX pseudo-op TETRA: MMIX-Pseudos. (line 113)
* MMIX pseudo-op WYDE: MMIX-Pseudos. (line 113)
* MMIX pseudo-ops: MMIX-Pseudos. (line 6)
* MMIX register names: MMIX-Regs. (line 6)
* MMIX support: MMIX-Dependent. (line 6)
* mmixal differences: MMIX-mmixal. (line 6)
* 'mmregs' directive, TIC54X: TIC54X-Directives. (line 167)
* 'mmsg' directive, TIC54X: TIC54X-Directives. (line 75)
* MMX, i386: i386-SIMD. (line 6)
* MMX, x86-64: i386-SIMD. (line 6)
* mnemonic compatibility, i386: i386-Mnemonics. (line 61)
* mnemonic suffixes, i386: i386-Variations. (line 28)
* mnemonic suffixes, x86-64: i386-Variations. (line 28)
* mnemonics for opcodes, VAX: VAX-opcodes. (line 6)
* mnemonics, AVR: AVR Opcodes. (line 6)
* mnemonics, D10V: D10V-Opcodes. (line 6)
* mnemonics, D30V: D30V-Opcodes. (line 6)
* mnemonics, H8/300: H8/300 Opcodes. (line 6)
* mnemonics, LM32: LM32 Opcodes. (line 6)
* mnemonics, SH: SH Opcodes. (line 6)
* mnemonics, SH64: SH64 Opcodes. (line 6)
* mnemonics, Z8000: Z8000 Opcodes. (line 6)
* 'mnolist' directive, TIC54X: TIC54X-Directives. (line 162)
* modifiers, M32C: M32C-Modifiers. (line 6)
* Motorola syntax for the 680x0: M68K-Moto-Syntax. (line 6)
* 'MOVI' instructions, relaxation: Xtensa Immediate Relaxation.
(line 12)
* MOVN, MOVZ and MOVK group relocations, AArch64: AArch64-Relocations.
(line 6)
* MOVW and MOVT relocations, ARM: ARM-Relocations. (line 21)
* MRI compatibility mode: M. (line 6)
* 'mri' directive: MRI. (line 6)
* MRI mode, temporarily: MRI. (line 6)
* MSP 430 floating point (IEEE): MSP430 Floating Point.
(line 6)
* MSP 430 identifiers: MSP430-Chars. (line 17)
* MSP 430 line comment character: MSP430-Chars. (line 6)
* MSP 430 line separator: MSP430-Chars. (line 14)
* MSP 430 machine directives: MSP430 Directives. (line 6)
* MSP 430 macros: MSP430-Macros. (line 6)
* MSP 430 opcodes: MSP430 Opcodes. (line 6)
* MSP 430 options (none): MSP430 Options. (line 6)
* MSP 430 profiling capability: MSP430 Profiling Capability.
(line 6)
* MSP 430 register names: MSP430-Regs. (line 6)
* MSP 430 support: MSP430-Dependent. (line 6)
* MSP430 Assembler Extensions: MSP430-Ext. (line 6)
* 'mul' instruction, i386: i386-Notes. (line 6)
* 'mul' instruction, x86-64: i386-Notes. (line 6)
* N32K support: NS32K-Dependent. (line 6)
* name: Z8000 Directives. (line 18)
* named section: Section. (line 6)
* named sections: Ld Sections. (line 8)
* names, symbol: Symbol Names. (line 6)
* naming object file: o. (line 6)
* NDS32 options: NDS32 Options. (line 6)
* NDS32 processor: NDS32-Dependent. (line 6)
* new page, in listings: Eject. (line 6)
* 'newblock' directive, TIC54X: TIC54X-Directives. (line 173)
* newline ('\n'): Strings. (line 21)
* newline, required at file end: Statements. (line 14)
* Nios II line comment character: Nios II Chars. (line 6)
* Nios II line separator character: Nios II Chars. (line 6)
* Nios II machine directives: Nios II Directives. (line 6)
* Nios II machine relocations: Nios II Relocations. (line 6)
* Nios II opcodes: Nios II Opcodes. (line 6)
* Nios II options: Nios II Options. (line 6)
* Nios II support: NiosII-Dependent. (line 6)
* Nios support: NiosII-Dependent. (line 6)
* 'no-absolute-literals' directive: Absolute Literals Directive.
(line 6)
* 'no-longcalls' directive: Longcalls Directive. (line 6)
* 'no-relax' command line option, Nios II: Nios II Options. (line 19)
* 'no-schedule' directive: Schedule Directive. (line 6)
* 'no-transform' directive: Transform Directive. (line 6)
* 'nolist' directive: Nolist. (line 6)
* 'nolist' directive, TIC54X: TIC54X-Directives. (line 129)
* 'NOP' pseudo op, ARM: ARM Opcodes. (line 9)
* notes for Alpha: Alpha Notes. (line 6)
* NS32K line comment character: NS32K-Chars. (line 6)
* NS32K line separator: NS32K-Chars. (line 18)
* null-terminated strings: Asciz. (line 6)
* number constants: Numbers. (line 6)
* number of macros executed: Macro. (line 142)
* numbered subsections: Sub-Sections. (line 6)
* numbers, 16-bit: hword. (line 6)
* numeric values: Expressions. (line 6)
* 'nword' directive, SPARC: Sparc-Directives. (line 20)
* object attributes: Object Attributes. (line 6)
* object file: Object. (line 6)
* object file format: Object Formats. (line 6)
* object file name: o. (line 6)
* object file, after errors: Z. (line 6)
* obsolescent directives: Deprecated. (line 6)
* 'octa' directive: Octa. (line 6)
* octal character code ('\DDD'): Strings. (line 30)
* octal integers: Integers. (line 9)
* 'offset' directive: Offset. (line 6)
* 'offset' directive, V850: V850 Directives. (line 6)
* opcode mnemonics, VAX: VAX-opcodes. (line 6)
* opcode names, TILE-Gx: TILE-Gx Opcodes. (line 6)
* opcode names, TILEPro: TILEPro Opcodes. (line 6)
* opcode names, Xtensa: Xtensa Opcodes. (line 6)
* opcode summary, AVR: AVR Opcodes. (line 6)
* opcode summary, D10V: D10V-Opcodes. (line 6)
* opcode summary, D30V: D30V-Opcodes. (line 6)
* opcode summary, H8/300: H8/300 Opcodes. (line 6)
* opcode summary, LM32: LM32 Opcodes. (line 6)
* opcode summary, SH: SH Opcodes. (line 6)
* opcode summary, SH64: SH64 Opcodes. (line 6)
* opcode summary, Z8000: Z8000 Opcodes. (line 6)
* opcodes for AArch64: AArch64 Opcodes. (line 6)
* opcodes for ARC: ARC Opcodes. (line 6)
* opcodes for ARM: ARM Opcodes. (line 6)
* opcodes for MSP 430: MSP430 Opcodes. (line 6)
* opcodes for Nios II: Nios II Opcodes. (line 6)
* opcodes for V850: V850 Opcodes. (line 6)
* opcodes, i860: Opcodes for i860. (line 6)
* opcodes, i960: Opcodes for i960. (line 6)
* opcodes, M680x0: M68K-opcodes. (line 6)
* opcodes, M68HC11: M68HC11-opcodes. (line 6)
* operand delimiters, i386: i386-Variations. (line 15)
* operand delimiters, x86-64: i386-Variations. (line 15)
* operand notation, VAX: VAX-operands. (line 6)
* operands in expressions: Arguments. (line 6)
* operator precedence: Infix Ops. (line 11)
* operators, in expressions: Operators. (line 6)
* operators, permitted arguments: Infix Ops. (line 6)
* optimization, D10V: Overview. (line 521)
* optimization, D30V: Overview. (line 526)
* optimizations: Xtensa Optimizations.
(line 6)
* 'option' directive, ARC: ARC Directives. (line 150)
* 'option' directive, TIC54X: TIC54X-Directives. (line 177)
* option summary: Overview. (line 6)
* options for AArch64 (none): AArch64 Options. (line 6)
* options for Alpha: Alpha Options. (line 6)
* options for ARC (none): ARC Options. (line 6)
* options for ARM (none): ARM Options. (line 6)
* options for AVR (none): AVR Options. (line 6)
* options for Blackfin (none): Blackfin Options. (line 6)
* options for i386: i386-Options. (line 6)
* options for IA-64: IA-64 Options. (line 6)
* options for LM32 (none): LM32 Options. (line 6)
* options for Meta: Meta Options. (line 6)
* options for MSP430 (none): MSP430 Options. (line 6)
* options for NDS32: NDS32 Options. (line 6)
* options for Nios II: Nios II Options. (line 6)
* options for PDP-11: PDP-11-Options. (line 6)
* options for PowerPC: PowerPC-Opts. (line 6)
* options for s390: s390 Options. (line 6)
* options for SCORE: SCORE-Opts. (line 6)
* options for SPARC: Sparc-Opts. (line 6)
* options for TIC6X: TIC6X Options. (line 6)
* options for V850 (none): V850 Options. (line 6)
* options for VAX/VMS: VAX-Opts. (line 42)
* options for x86-64: i386-Options. (line 6)
* options for Z80: Z80 Options. (line 6)
* options, all versions of assembler: Invoking. (line 6)
* options, command line: Command Line. (line 13)
* options, CRIS: CRIS-Opts. (line 6)
* options, D10V: D10V-Opts. (line 6)
* options, D30V: D30V-Opts. (line 6)
* options, Epiphany: Epiphany Options. (line 6)
* options, H8/300: H8/300 Options. (line 6)
* options, i960: Options-i960. (line 6)
* options, IP2K: IP2K-Opts. (line 6)
* options, M32C: M32C-Opts. (line 6)
* options, M32R: M32R-Opts. (line 6)
* options, M680x0: M68K-Opts. (line 6)
* options, M68HC11: M68HC11-Opts. (line 6)
* options, MMIX: MMIX-Opts. (line 6)
* options, PJ: PJ Options. (line 6)
* options, RL78: RL78-Opts. (line 6)
* options, RX: RX-Opts. (line 6)
* options, SH: SH Options. (line 6)
* options, SH64: SH64 Options. (line 6)
* options, TIC54X: TIC54X-Opts. (line 6)
* options, XGATE: XGATE-Opts. (line 6)
* options, Z8000: Z8000 Options. (line 6)
* 'org' directive: Org. (line 6)
* other attribute, of 'a.out' symbol: Symbol Other. (line 6)
* output file: Object. (line 6)
* 'p2align' directive: P2align. (line 6)
* 'p2alignl' directive: P2align. (line 28)
* 'p2alignw' directive: P2align. (line 28)
* padding the location counter: Align. (line 6)
* padding the location counter given a power of two: P2align. (line 6)
* padding the location counter given number of bytes: Balign. (line 6)
* page, in listings: Eject. (line 6)
* paper size, for listings: Psize. (line 6)
* paths for '.include': I. (line 6)
* patterns, writing in memory: Fill. (line 6)
* PDP-11 comments: PDP-11-Syntax. (line 16)
* PDP-11 floating-point register syntax: PDP-11-Syntax. (line 13)
* PDP-11 general-purpose register syntax: PDP-11-Syntax. (line 10)
* PDP-11 instruction naming: PDP-11-Mnemonics. (line 6)
* PDP-11 line separator: PDP-11-Syntax. (line 19)
* PDP-11 support: PDP-11-Dependent. (line 6)
* PDP-11 syntax: PDP-11-Syntax. (line 6)
* PIC code generation for ARM: ARM Options. (line 173)
* PIC code generation for M32R: M32R-Opts. (line 42)
* PIC selection, MIPS: MIPS Options. (line 21)
* PJ endianness: Overview. (line 655)
* PJ line comment character: PJ-Chars. (line 6)
* PJ line separator: PJ-Chars. (line 14)
* PJ options: PJ Options. (line 6)
* PJ support: PJ-Dependent. (line 6)
* plus, permitted arguments: Infix Ops. (line 45)
* 'popsection' directive: PopSection. (line 6)
* Position-independent code, CRIS: CRIS-Opts. (line 27)
* Position-independent code, symbols in, CRIS: CRIS-Pic. (line 6)
* PowerPC architectures: PowerPC-Opts. (line 6)
* PowerPC directives: PowerPC-Pseudo. (line 6)
* PowerPC line comment character: PowerPC-Chars. (line 6)
* PowerPC line separator: PowerPC-Chars. (line 18)
* PowerPC options: PowerPC-Opts. (line 6)
* PowerPC support: PPC-Dependent. (line 6)
* precedence of operators: Infix Ops. (line 11)
* precision, floating point: Flonums. (line 6)
* prefix operators: Prefix Ops. (line 6)
* prefixes, i386: i386-Prefixes. (line 6)
* preprocessing: Preprocessing. (line 6)
* preprocessing, turning on and off: Preprocessing. (line 26)
* 'previous' directive: Previous. (line 6)
* primary attributes, COFF symbols: COFF Symbols. (line 13)
* 'print' directive: Print. (line 6)
* 'proc' directive, SPARC: Sparc-Directives. (line 25)
* 'profiler' directive, MSP 430: MSP430 Directives. (line 26)
* profiling capability for MSP 430: MSP430 Profiling Capability.
(line 6)
* 'protected' directive: Protected. (line 6)
* pseudo-op .arch, CRIS: CRIS-Pseudos. (line 50)
* pseudo-op .dword, CRIS: CRIS-Pseudos. (line 12)
* pseudo-op .syntax, CRIS: CRIS-Pseudos. (line 18)
* pseudo-op BSPEC, MMIX: MMIX-Pseudos. (line 137)
* pseudo-op BYTE, MMIX: MMIX-Pseudos. (line 101)
* pseudo-op ESPEC, MMIX: MMIX-Pseudos. (line 137)
* pseudo-op GREG, MMIX: MMIX-Pseudos. (line 53)
* pseudo-op IS, MMIX: MMIX-Pseudos. (line 44)
* pseudo-op LOC, MMIX: MMIX-Pseudos. (line 7)
* pseudo-op LOCAL, MMIX: MMIX-Pseudos. (line 29)
* pseudo-op OCTA, MMIX: MMIX-Pseudos. (line 113)
* pseudo-op PREFIX, MMIX: MMIX-Pseudos. (line 125)
* pseudo-op TETRA, MMIX: MMIX-Pseudos. (line 113)
* pseudo-op WYDE, MMIX: MMIX-Pseudos. (line 113)
* pseudo-opcodes for XStormy16: XStormy16 Opcodes. (line 6)
* pseudo-opcodes, M680x0: M68K-Branch. (line 6)
* pseudo-opcodes, M68HC11: M68HC11-Branch. (line 6)
* pseudo-ops for branch, VAX: VAX-branch. (line 6)
* pseudo-ops, CRIS: CRIS-Pseudos. (line 6)
* pseudo-ops, machine independent: Pseudo Ops. (line 6)
* pseudo-ops, MMIX: MMIX-Pseudos. (line 6)
* 'psize' directive: Psize. (line 6)
* PSR bits: IA-64-Bits. (line 6)
* 'pstring' directive, TIC54X: TIC54X-Directives. (line 206)
* 'psw' register, V850: V850-Regs. (line 80)
* 'purgem' directive: Purgem. (line 6)
* purpose of GNU assembler: GNU Assembler. (line 12)
* 'pushsection' directive: PushSection. (line 6)
* 'quad' directive: Quad. (line 6)
* 'quad' directive, i386: i386-Float. (line 21)
* 'quad' directive, x86-64: i386-Float. (line 21)
* real-mode code, i386: i386-16bit. (line 6)
* 'ref' directive, TIC54X: TIC54X-Directives. (line 101)
* 'refsym' directive, MSP 430: MSP430 Directives. (line 30)
* 'register' directive, SPARC: Sparc-Directives. (line 29)
* register names, AArch64: AArch64-Regs. (line 6)
* register names, Alpha: Alpha-Regs. (line 6)
* register names, ARC: ARC-Regs. (line 6)
* register names, ARM: ARM-Regs. (line 6)
* register names, AVR: AVR-Regs. (line 6)
* register names, CRIS: CRIS-Regs. (line 6)
* register names, H8/300: H8/300-Regs. (line 6)
* register names, IA-64: IA-64-Regs. (line 6)
* register names, LM32: LM32-Regs. (line 6)
* register names, MMIX: MMIX-Regs. (line 6)
* register names, MSP 430: MSP430-Regs. (line 6)
* register names, Sparc: Sparc-Regs. (line 6)
* register names, TILE-Gx: TILE-Gx Registers. (line 6)
* register names, TILEPro: TILEPro Registers. (line 6)
* register names, V850: V850-Regs. (line 6)
* register names, VAX: VAX-operands. (line 17)
* register names, Xtensa: Xtensa Registers. (line 6)
* register names, Z80: Z80-Regs. (line 6)
* register naming, s390: s390 Register. (line 6)
* register operands, i386: i386-Variations. (line 15)
* register operands, x86-64: i386-Variations. (line 15)
* registers, D10V: D10V-Regs. (line 6)
* registers, D30V: D30V-Regs. (line 6)
* registers, i386: i386-Regs. (line 6)
* registers, Meta: Meta-Regs. (line 6)
* registers, SH: SH-Regs. (line 6)
* registers, SH64: SH64-Regs. (line 6)
* registers, TIC54X memory-mapped: TIC54X-MMRegs. (line 6)
* registers, x86-64: i386-Regs. (line 6)
* registers, Z8000: Z8000-Regs. (line 6)
* 'relax-all' command line option, Nios II: Nios II Options. (line 13)
* 'relax-section' command line option, Nios II: Nios II Options.
(line 6)
* relaxation: Xtensa Relaxation. (line 6)
* relaxation of 'ADDI' instructions: Xtensa Immediate Relaxation.
(line 43)
* relaxation of branch instructions: Xtensa Branch Relaxation.
(line 6)
* relaxation of call instructions: Xtensa Call Relaxation.
(line 6)
* relaxation of immediate fields: Xtensa Immediate Relaxation.
(line 6)
* relaxation of jump instructions: Xtensa Jump Relaxation.
(line 6)
* relaxation of 'L16SI' instructions: Xtensa Immediate Relaxation.
(line 23)
* relaxation of 'L16UI' instructions: Xtensa Immediate Relaxation.
(line 23)
* relaxation of 'L32I' instructions: Xtensa Immediate Relaxation.
(line 23)
* relaxation of 'L8UI' instructions: Xtensa Immediate Relaxation.
(line 23)
* relaxation of 'MOVI' instructions: Xtensa Immediate Relaxation.
(line 12)
* 'reloc' directive: Reloc. (line 6)
* relocation: Sections. (line 6)
* relocation example: Ld Sections. (line 40)
* relocations, AArch64: AArch64-Relocations. (line 6)
* relocations, Alpha: Alpha-Relocs. (line 6)
* relocations, Sparc: Sparc-Relocs. (line 6)
* repeat prefixes, i386: i386-Prefixes. (line 44)
* reporting bugs in assembler: Reporting Bugs. (line 6)
* 'rept' directive: Rept. (line 6)
* 'reserve' directive, SPARC: Sparc-Directives. (line 39)
* return instructions, i386: i386-Variations. (line 40)
* return instructions, x86-64: i386-Variations. (line 40)
* REX prefixes, i386: i386-Prefixes. (line 46)
* RL78 assembler directives: RL78-Directives. (line 6)
* RL78 line comment character: RL78-Chars. (line 6)
* RL78 line separator: RL78-Chars. (line 14)
* RL78 modifiers: RL78-Modifiers. (line 6)
* RL78 options: RL78-Opts. (line 6)
* RL78 support: RL78-Dependent. (line 6)
* rsect: Z8000 Directives. (line 51)
* RX assembler directive .3byte: RX-Directives. (line 9)
* RX assembler directive .fetchalign: RX-Directives. (line 13)
* RX assembler directives: RX-Directives. (line 6)
* RX floating point: RX-Float. (line 6)
* RX line comment character: RX-Chars. (line 6)
* RX line separator: RX-Chars. (line 14)
* RX modifiers: RX-Modifiers. (line 6)
* RX options: RX-Opts. (line 6)
* RX support: RX-Dependent. (line 6)
* s390 floating point: s390 Floating Point. (line 6)
* s390 instruction aliases: s390 Aliases. (line 6)
* s390 instruction formats: s390 Formats. (line 6)
* s390 instruction marker: s390 Instruction Marker.
(line 6)
* s390 instruction mnemonics: s390 Mnemonics. (line 6)
* s390 instruction operand modifier: s390 Operand Modifier.
(line 6)
* s390 instruction operands: s390 Operands. (line 6)
* s390 instruction syntax: s390 Syntax. (line 6)
* s390 line comment character: s390 Characters. (line 6)
* s390 line separator: s390 Characters. (line 13)
* s390 literal pool entries: s390 Literal Pool Entries.
(line 6)
* s390 options: s390 Options. (line 6)
* s390 register naming: s390 Register. (line 6)
* s390 support: S/390-Dependent. (line 6)
* 'sblock' directive, TIC54X: TIC54X-Directives. (line 180)
* 'sbttl' directive: Sbttl. (line 6)
* 'schedule' directive: Schedule Directive. (line 6)
* 'scl' directive: Scl. (line 6)
* SCORE architectures: SCORE-Opts. (line 6)
* SCORE directives: SCORE-Pseudo. (line 6)
* SCORE line comment character: SCORE-Chars. (line 6)
* SCORE line separator: SCORE-Chars. (line 14)
* SCORE options: SCORE-Opts. (line 6)
* SCORE processor: SCORE-Dependent. (line 6)
* 'sdaoff' pseudo-op, V850: V850 Opcodes. (line 65)
* search path for '.include': I. (line 6)
* 'sect' directive, TIC54X: TIC54X-Directives. (line 186)
* 'section' directive (COFF version): Section. (line 16)
* 'section' directive (ELF version): Section. (line 66)
* 'section' directive, V850: V850 Directives. (line 9)
* section name substitution: Section. (line 70)
* section override prefixes, i386: i386-Prefixes. (line 23)
* Section Stack: PopSection. (line 6)
* Section Stack <1>: Previous. (line 6)
* Section Stack <2>: PushSection. (line 6)
* Section Stack <3>: Section. (line 61)
* Section Stack <4>: SubSection. (line 6)
* section-relative addressing: Secs Background. (line 65)
* sections: Sections. (line 6)
* sections in messages, internal: As Sections. (line 6)
* sections, i386: i386-Variations. (line 46)
* sections, named: Ld Sections. (line 8)
* sections, x86-64: i386-Variations. (line 46)
* 'seg' directive, SPARC: Sparc-Directives. (line 44)
* segm: Z8000 Directives. (line 10)
* 'set at' directive, Nios II: Nios II Directives. (line 35)
* 'set break' directive, Nios II: Nios II Directives. (line 43)
* 'set' directive: Set. (line 6)
* 'set' directive, Nios II: Nios II Directives. (line 57)
* 'set' directive, TIC54X: TIC54X-Directives. (line 189)
* 'set noat' directive, Nios II: Nios II Directives. (line 31)
* 'set nobreak' directive, Nios II: Nios II Directives. (line 39)
* 'set norelax' directive, Nios II: Nios II Directives. (line 46)
* 'set relaxall' directive, Nios II: Nios II Directives. (line 53)
* 'set relaxsection' directive, Nios II: Nios II Directives. (line 49)
* SH addressing modes: SH-Addressing. (line 6)
* SH floating point (IEEE): SH Floating Point. (line 6)
* SH line comment character: SH-Chars. (line 6)
* SH line separator: SH-Chars. (line 8)
* SH machine directives: SH Directives. (line 6)
* SH opcode summary: SH Opcodes. (line 6)
* SH options: SH Options. (line 6)
* SH registers: SH-Regs. (line 6)
* SH support: SH-Dependent. (line 6)
* SH64 ABI options: SH64 Options. (line 25)
* SH64 addressing modes: SH64-Addressing. (line 6)
* SH64 ISA options: SH64 Options. (line 6)
* SH64 line comment character: SH64-Chars. (line 6)
* SH64 line separator: SH64-Chars. (line 13)
* SH64 machine directives: SH64 Directives. (line 9)
* SH64 opcode summary: SH64 Opcodes. (line 6)
* SH64 options: SH64 Options. (line 6)
* SH64 registers: SH64-Regs. (line 6)
* SH64 support: SH64-Dependent. (line 6)
* 'shigh' directive, M32R: M32R-Directives. (line 26)
* 'short' directive: Short. (line 6)
* 'short' directive, ARC: ARC Directives. (line 159)
* 'short' directive, TIC54X: TIC54X-Directives. (line 109)
* SIMD, i386: i386-SIMD. (line 6)
* SIMD, x86-64: i386-SIMD. (line 6)
* single character constant: Chars. (line 6)
* 'single' directive: Single. (line 6)
* 'single' directive, i386: i386-Float. (line 14)
* 'single' directive, x86-64: i386-Float. (line 14)
* single quote, Z80: Z80-Chars. (line 20)
* sixteen bit integers: hword. (line 6)
* sixteen byte integer: Octa. (line 6)
* 'size' directive (COFF version): Size. (line 11)
* 'size' directive (ELF version): Size. (line 19)
* size modifiers, D10V: D10V-Size. (line 6)
* size modifiers, D30V: D30V-Size. (line 6)
* size modifiers, M680x0: M68K-Syntax. (line 8)
* size prefixes, i386: i386-Prefixes. (line 27)
* size suffixes, H8/300: H8/300 Opcodes. (line 160)
* size, translations, Sparc: Sparc-Size-Translations.
(line 6)
* sizes operands, i386: i386-Variations. (line 28)
* sizes operands, x86-64: i386-Variations. (line 28)
* 'skip' directive: Skip. (line 6)
* 'skip' directive, M680x0: M68K-Directives. (line 19)
* 'skip' directive, SPARC: Sparc-Directives. (line 48)
* 'sleb128' directive: Sleb128. (line 6)
* small data, MIPS: MIPS Small Data. (line 6)
* SmartMIPS instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 11)
* SOM symbol attributes: SOM Symbols. (line 6)
* source program: Input Files. (line 6)
* source, destination operands; i386: i386-Variations. (line 21)
* source, destination operands; x86-64: i386-Variations. (line 21)
* sp register: Xtensa Registers. (line 6)
* 'sp' register, V850: V850-Regs. (line 12)
* 'space' directive: Space. (line 6)
* 'space' directive, TIC54X: TIC54X-Directives. (line 194)
* space used, maximum for assembly: statistics. (line 6)
* SPARC architectures: Sparc-Opts. (line 6)
* Sparc constants: Sparc-Constants. (line 6)
* SPARC data alignment: Sparc-Aligned-Data. (line 6)
* SPARC floating point (IEEE): Sparc-Float. (line 6)
* Sparc line comment character: Sparc-Chars. (line 6)
* Sparc line separator: Sparc-Chars. (line 14)
* SPARC machine directives: Sparc-Directives. (line 6)
* SPARC options: Sparc-Opts. (line 6)
* Sparc registers: Sparc-Regs. (line 6)
* Sparc relocations: Sparc-Relocs. (line 6)
* Sparc size translations: Sparc-Size-Translations.
(line 6)
* SPARC support: Sparc-Dependent. (line 6)
* SPARC syntax: Sparc-Aligned-Data. (line 21)
* special characters, M680x0: M68K-Chars. (line 6)
* special purpose registers, MSP 430: MSP430-Regs. (line 11)
* 'sslist' directive, TIC54X: TIC54X-Directives. (line 201)
* 'ssnolist' directive, TIC54X: TIC54X-Directives. (line 201)
* 'stabd' directive: Stab. (line 38)
* 'stabn' directive: Stab. (line 49)
* 'stabs' directive: Stab. (line 52)
* 'stabX' directives: Stab. (line 6)
* standard assembler sections: Secs Background. (line 27)
* standard input, as input file: Command Line. (line 10)
* statement separator character: Statements. (line 6)
* statement separator, AArch64: AArch64-Chars. (line 10)
* statement separator, Alpha: Alpha-Chars. (line 11)
* statement separator, ARC: ARC-Chars. (line 12)
* statement separator, ARM: ARM-Chars. (line 14)
* statement separator, AVR: AVR-Chars. (line 14)
* statement separator, CR16: CR16-Chars. (line 12)
* statement separator, Epiphany: Epiphany-Chars. (line 14)
* statement separator, H8/300: H8/300-Chars. (line 8)
* statement separator, i386: i386-Chars. (line 18)
* statement separator, i860: i860-Chars. (line 14)
* statement separator, i960: i960-Chars. (line 14)
* statement separator, IA-64: IA-64-Chars. (line 8)
* statement separator, IP2K: IP2K-Chars. (line 14)
* statement separator, LM32: LM32-Chars. (line 12)
* statement separator, M32C: M32C-Chars. (line 14)
* statement separator, M68HC11: M68HC11-Syntax. (line 26)
* statement separator, Meta: Meta-Chars. (line 8)
* statement separator, MicroBlaze: MicroBlaze-Chars. (line 14)
* statement separator, MIPS: MIPS-Chars. (line 14)
* statement separator, MSP 430: MSP430-Chars. (line 14)
* statement separator, NS32K: NS32K-Chars. (line 18)
* statement separator, PJ: PJ-Chars. (line 14)
* statement separator, PowerPC: PowerPC-Chars. (line 18)
* statement separator, RL78: RL78-Chars. (line 14)
* statement separator, RX: RX-Chars. (line 14)
* statement separator, s390: s390 Characters. (line 13)
* statement separator, SCORE: SCORE-Chars. (line 14)
* statement separator, SH: SH-Chars. (line 8)
* statement separator, SH64: SH64-Chars. (line 13)
* statement separator, Sparc: Sparc-Chars. (line 14)
* statement separator, TIC54X: TIC54X-Chars. (line 17)
* statement separator, TIC6X: TIC6X Syntax. (line 13)
* statement separator, V850: V850-Chars. (line 13)
* statement separator, VAX: VAX-Chars. (line 14)
* statement separator, XGATE: XGATE-Syntax. (line 25)
* statement separator, XStormy16: XStormy16-Chars. (line 14)
* statement separator, Z80: Z80-Chars. (line 13)
* statement separator, Z8000: Z8000-Chars. (line 13)
* statements, structure of: Statements. (line 6)
* statistics, about assembly: statistics. (line 6)
* stopping the assembly: Abort. (line 6)
* string constants: Strings. (line 6)
* 'string' directive: String. (line 8)
* 'string' directive on HPPA: HPPA Directives. (line 137)
* 'string' directive, TIC54X: TIC54X-Directives. (line 206)
* string literals: Ascii. (line 6)
* string, copying to object file: String. (line 8)
* 'string16' directive: String. (line 8)
* string16, copying to object file: String. (line 8)
* 'string32' directive: String. (line 8)
* string32, copying to object file: String. (line 8)
* 'string64' directive: String. (line 8)
* string64, copying to object file: String. (line 8)
* 'string8' directive: String. (line 8)
* string8, copying to object file: String. (line 8)
* 'struct' directive: Struct. (line 6)
* 'struct' directive, TIC54X: TIC54X-Directives. (line 214)
* structure debugging, COFF: Tag. (line 6)
* sub-instruction ordering, D10V: D10V-Chars. (line 14)
* sub-instruction ordering, D30V: D30V-Chars. (line 14)
* sub-instructions, D10V: D10V-Subs. (line 6)
* sub-instructions, D30V: D30V-Subs. (line 6)
* subexpressions: Arguments. (line 24)
* 'subsection' directive: SubSection. (line 6)
* subsym builtins, TIC54X: TIC54X-Macros. (line 16)
* subtitles for listings: Sbttl. (line 6)
* subtraction, permitted arguments: Infix Ops. (line 50)
* summary of options: Overview. (line 6)
* support: HPPA-Dependent. (line 6)
* supporting files, including: Include. (line 6)
* suppressing warnings: W. (line 11)
* sval: Z8000 Directives. (line 33)
* symbol attributes: Symbol Attributes. (line 6)
* symbol attributes, 'a.out': a.out Symbols. (line 6)
* symbol attributes, COFF: COFF Symbols. (line 6)
* symbol attributes, SOM: SOM Symbols. (line 6)
* symbol descriptor, COFF: Desc. (line 6)
* symbol modifiers: AVR-Modifiers. (line 12)
* symbol modifiers <1>: LM32-Modifiers. (line 12)
* symbol modifiers <2>: M32C-Modifiers. (line 11)
* symbol modifiers <3>: M68HC11-Modifiers. (line 12)
* symbol modifiers, TILE-Gx: TILE-Gx Modifiers. (line 6)
* symbol modifiers, TILEPro: TILEPro Modifiers. (line 6)
* symbol names: Symbol Names. (line 6)
* symbol names, '$' in: D10V-Chars. (line 46)
* symbol names, '$' in <1>: D30V-Chars. (line 70)
* symbol names, '$' in <2>: Meta-Chars. (line 10)
* symbol names, '$' in <3>: SH-Chars. (line 15)
* symbol names, '$' in <4>: SH64-Chars. (line 15)
* symbol names, local: Symbol Names. (line 27)
* symbol names, temporary: Symbol Names. (line 40)
* symbol storage class (COFF): Scl. (line 6)
* symbol type: Symbol Type. (line 6)
* symbol type, COFF: Type. (line 11)
* symbol type, ELF: Type. (line 22)
* symbol value: Symbol Value. (line 6)
* symbol value, setting: Set. (line 6)
* symbol values, assigning: Setting Symbols. (line 6)
* symbol versioning: Symver. (line 6)
* symbol, common: Comm. (line 6)
* symbol, making visible to linker: Global. (line 6)
* symbolic debuggers, information for: Stab. (line 6)
* symbols: Symbols. (line 6)
* Symbols in position-independent code, CRIS: CRIS-Pic. (line 6)
* symbols with uppercase, VAX/VMS: VAX-Opts. (line 42)
* symbols, assigning values to: Equ. (line 6)
* Symbols, built-in, CRIS: CRIS-Symbols. (line 6)
* Symbols, CRIS, built-in: CRIS-Symbols. (line 6)
* symbols, local common: Lcomm. (line 6)
* 'symver' directive: Symver. (line 6)
* syntax compatibility, i386: i386-Variations. (line 6)
* syntax compatibility, x86-64: i386-Variations. (line 6)
* syntax, AVR: AVR-Modifiers. (line 6)
* syntax, Blackfin: Blackfin Syntax. (line 6)
* syntax, D10V: D10V-Syntax. (line 6)
* syntax, D30V: D30V-Syntax. (line 6)
* syntax, LM32: LM32-Modifiers. (line 6)
* syntax, M680x0: M68K-Syntax. (line 8)
* syntax, M68HC11: M68HC11-Syntax. (line 6)
* syntax, M68HC11 <1>: M68HC11-Modifiers. (line 6)
* syntax, machine-independent: Syntax. (line 6)
* syntax, RL78: RL78-Modifiers. (line 6)
* syntax, RX: RX-Modifiers. (line 6)
* syntax, SPARC: Sparc-Aligned-Data. (line 20)
* syntax, TILE-Gx: TILE-Gx Syntax. (line 6)
* syntax, TILEPro: TILEPro Syntax. (line 6)
* syntax, XGATE: XGATE-Syntax. (line 6)
* syntax, Xtensa assembler: Xtensa Syntax. (line 6)
* 'sysproc' directive, i960: Directives-i960. (line 37)
* tab ('\t'): Strings. (line 27)
* 'tab' directive, TIC54X: TIC54X-Directives. (line 245)
* 'tag' directive: Tag. (line 6)
* 'tag' directive, TIC54X: TIC54X-Directives. (line 214)
* 'tag' directive, TIC54X <1>: TIC54X-Directives. (line 248)
* TBM, i386: i386-TBM. (line 6)
* TBM, x86-64: i386-TBM. (line 6)
* 'tdaoff' pseudo-op, V850: V850 Opcodes. (line 81)
* temporary symbol names: Symbol Names. (line 40)
* text and data sections, joining: R. (line 6)
* 'text' directive: Text. (line 6)
* text section: Ld Sections. (line 9)
* 'tfloat' directive, i386: i386-Float. (line 14)
* 'tfloat' directive, x86-64: i386-Float. (line 14)
* Thumb support: ARM-Dependent. (line 6)
* TIC54X builtin math functions: TIC54X-Builtins. (line 6)
* TIC54X line comment character: TIC54X-Chars. (line 6)
* TIC54X line separator: TIC54X-Chars. (line 17)
* TIC54X machine directives: TIC54X-Directives. (line 6)
* TIC54X memory-mapped registers: TIC54X-MMRegs. (line 6)
* TIC54X options: TIC54X-Opts. (line 6)
* TIC54X subsym builtins: TIC54X-Macros. (line 16)
* TIC54X support: TIC54X-Dependent. (line 6)
* TIC54X-specific macros: TIC54X-Macros. (line 6)
* TIC6X big-endian output: TIC6X Options. (line 46)
* TIC6X line comment character: TIC6X Syntax. (line 6)
* TIC6X line separator: TIC6X Syntax. (line 13)
* TIC6X little-endian output: TIC6X Options. (line 46)
* TIC6X machine directives: TIC6X Directives. (line 6)
* TIC6X options: TIC6X Options. (line 6)
* TIC6X support: TIC6X-Dependent. (line 6)
* TILE-Gx machine directives: TILE-Gx Directives. (line 6)
* TILE-Gx modifiers: TILE-Gx Modifiers. (line 6)
* TILE-Gx opcode names: TILE-Gx Opcodes. (line 6)
* TILE-Gx register names: TILE-Gx Registers. (line 6)
* TILE-Gx support: TILE-Gx-Dependent. (line 6)
* TILE-Gx syntax: TILE-Gx Syntax. (line 6)
* TILEPro machine directives: TILEPro Directives. (line 6)
* TILEPro modifiers: TILEPro Modifiers. (line 6)
* TILEPro opcode names: TILEPro Opcodes. (line 6)
* TILEPro register names: TILEPro Registers. (line 6)
* TILEPro support: TILEPro-Dependent. (line 6)
* TILEPro syntax: TILEPro Syntax. (line 6)
* time, total for assembly: statistics. (line 6)
* 'title' directive: Title. (line 6)
* 'tls_gd' directive, Nios II: Nios II Relocations. (line 38)
* 'tls_ie' directive, Nios II: Nios II Relocations. (line 38)
* 'tls_ldm' directive, Nios II: Nios II Relocations. (line 38)
* 'tls_ldo' directive, Nios II: Nios II Relocations. (line 38)
* 'tls_le' directive, Nios II: Nios II Relocations. (line 38)
* TMS320C6X support: TIC6X-Dependent. (line 6)
* 'tp' register, V850: V850-Regs. (line 16)
* 'transform' directive: Transform Directive. (line 6)
* trusted compiler: f. (line 6)
* turning preprocessing on and off: Preprocessing. (line 26)
* 'type' directive (COFF version): Type. (line 11)
* 'type' directive (ELF version): Type. (line 22)
* type of a symbol: Symbol Type. (line 6)
* 'ualong' directive, SH: SH Directives. (line 6)
* 'uaquad' directive, SH: SH Directives. (line 6)
* 'uaword' directive, SH: SH Directives. (line 6)
* 'ubyte' directive, TIC54X: TIC54X-Directives. (line 34)
* 'uchar' directive, TIC54X: TIC54X-Directives. (line 34)
* 'uhalf' directive, TIC54X: TIC54X-Directives. (line 109)
* 'uint' directive, TIC54X: TIC54X-Directives. (line 109)
* 'uleb128' directive: Uleb128. (line 6)
* 'ulong' directive, TIC54X: TIC54X-Directives. (line 133)
* undefined section: Ld Sections. (line 36)
* 'union' directive, TIC54X: TIC54X-Directives. (line 248)
* unsegm: Z8000 Directives. (line 14)
* 'usect' directive, TIC54X: TIC54X-Directives. (line 260)
* 'ushort' directive, TIC54X: TIC54X-Directives. (line 109)
* 'uword' directive, TIC54X: TIC54X-Directives. (line 109)
* V850 command line options: V850 Options. (line 9)
* V850 floating point (IEEE): V850 Floating Point. (line 6)
* V850 line comment character: V850-Chars. (line 6)
* V850 line separator: V850-Chars. (line 13)
* V850 machine directives: V850 Directives. (line 6)
* V850 opcodes: V850 Opcodes. (line 6)
* V850 options (none): V850 Options. (line 6)
* V850 register names: V850-Regs. (line 6)
* V850 support: V850-Dependent. (line 6)
* 'val' directive: Val. (line 6)
* value attribute, COFF: Val. (line 6)
* value of a symbol: Symbol Value. (line 6)
* 'var' directive, TIC54X: TIC54X-Directives. (line 270)
* VAX bitfields not supported: VAX-no. (line 6)
* VAX branch improvement: VAX-branch. (line 6)
* VAX command-line options ignored: VAX-Opts. (line 6)
* VAX displacement sizing character: VAX-operands. (line 12)
* VAX floating point: VAX-float. (line 6)
* VAX immediate character: VAX-operands. (line 6)
* VAX indirect character: VAX-operands. (line 9)
* VAX line comment character: VAX-Chars. (line 6)
* VAX line separator: VAX-Chars. (line 14)
* VAX machine directives: VAX-directives. (line 6)
* VAX opcode mnemonics: VAX-opcodes. (line 6)
* VAX operand notation: VAX-operands. (line 6)
* VAX register names: VAX-operands. (line 17)
* VAX support: Vax-Dependent. (line 6)
* Vax-11 C compatibility: VAX-Opts. (line 42)
* VAX/VMS options: VAX-Opts. (line 42)
* 'version' directive: Version. (line 6)
* 'version' directive, TIC54X: TIC54X-Directives. (line 274)
* version of assembler: v. (line 6)
* versions of symbols: Symver. (line 6)
* Virtualization instruction generation override: MIPS ASE Instruction Generation Overrides.
(line 46)
* visibility: Hidden. (line 6)
* visibility <1>: Internal. (line 6)
* visibility <2>: Protected. (line 6)
* VMS (VAX) options: VAX-Opts. (line 42)
* 'vtable_entry' directive: VTableEntry. (line 6)
* 'vtable_inherit' directive: VTableInherit. (line 6)
* warning directive: Warning. (line 6)
* warning for altered difference tables: K. (line 6)
* warning messages: Errors. (line 6)
* warnings, causing error: W. (line 16)
* warnings, M32R: M32R-Warnings. (line 6)
* warnings, suppressing: W. (line 11)
* warnings, switching on: W. (line 19)
* 'weak' directive: Weak. (line 6)
* 'weakref' directive: Weakref. (line 6)
* whitespace: Whitespace. (line 6)
* whitespace, removed by preprocessor: Preprocessing. (line 7)
* wide floating point directives, VAX: VAX-directives. (line 9)
* 'width' directive, TIC54X: TIC54X-Directives. (line 125)
* Width of continuation lines of disassembly output: listing. (line 21)
* Width of first line disassembly output: listing. (line 16)
* Width of source line output: listing. (line 28)
* 'wmsg' directive, TIC54X: TIC54X-Directives. (line 75)
* 'word' directive: Word. (line 6)
* 'word' directive, ARC: ARC Directives. (line 162)
* 'word' directive, H8/300: H8/300 Directives. (line 6)
* 'word' directive, i386: i386-Float. (line 21)
* 'word' directive, Nios II: Nios II Directives. (line 13)
* 'word' directive, SPARC: Sparc-Directives. (line 51)
* 'word' directive, TIC54X: TIC54X-Directives. (line 109)
* 'word' directive, x86-64: i386-Float. (line 21)
* writing patterns in memory: Fill. (line 6)
* wval: Z8000 Directives. (line 24)
* x86 machine directives: i386-Directives. (line 6)
* x86-64 arch directive: i386-Arch. (line 6)
* x86-64 att_syntax pseudo op: i386-Variations. (line 6)
* x86-64 conversion instructions: i386-Mnemonics. (line 36)
* x86-64 floating point: i386-Float. (line 6)
* x86-64 immediate operands: i386-Variations. (line 15)
* x86-64 instruction naming: i386-Mnemonics. (line 6)
* x86-64 intel_syntax pseudo op: i386-Variations. (line 6)
* x86-64 jump optimization: i386-Jumps. (line 6)
* x86-64 jump, call, return: i386-Variations. (line 40)
* x86-64 jump/call operands: i386-Variations. (line 15)
* x86-64 memory references: i386-Memory. (line 6)
* x86-64 options: i386-Options. (line 6)
* x86-64 register operands: i386-Variations. (line 15)
* x86-64 registers: i386-Regs. (line 6)
* x86-64 sections: i386-Variations. (line 46)
* x86-64 size suffixes: i386-Variations. (line 28)
* x86-64 source, destination operands: i386-Variations. (line 21)
* x86-64 support: i386-Dependent. (line 6)
* x86-64 syntax compatibility: i386-Variations. (line 6)
* 'xfloat' directive, TIC54X: TIC54X-Directives. (line 62)
* XGATE addressing modes: XGATE-Syntax. (line 28)
* XGATE assembler directives: XGATE-Directives. (line 6)
* XGATE floating point: XGATE-Float. (line 6)
* XGATE line comment character: XGATE-Syntax. (line 16)
* XGATE line separator: XGATE-Syntax. (line 25)
* XGATE opcodes: XGATE-opcodes. (line 6)
* XGATE options: XGATE-Opts. (line 6)
* XGATE support: XGATE-Dependent. (line 6)
* XGATE syntax: XGATE-Syntax. (line 6)
* 'xlong' directive, TIC54X: TIC54X-Directives. (line 133)
* XStormy16 comment character: XStormy16-Chars. (line 11)
* XStormy16 line comment character: XStormy16-Chars. (line 6)
* XStormy16 line separator: XStormy16-Chars. (line 14)
* XStormy16 machine directives: XStormy16 Directives.
(line 6)
* XStormy16 pseudo-opcodes: XStormy16 Opcodes. (line 6)
* XStormy16 support: XSTORMY16-Dependent. (line 6)
* Xtensa architecture: Xtensa-Dependent. (line 6)
* Xtensa assembler syntax: Xtensa Syntax. (line 6)
* Xtensa directives: Xtensa Directives. (line 6)
* Xtensa opcode names: Xtensa Opcodes. (line 6)
* Xtensa register names: Xtensa Registers. (line 6)
* 'xword' directive, SPARC: Sparc-Directives. (line 55)
* Z80 $: Z80-Chars. (line 15)
* Z80 ': Z80-Chars. (line 20)
* Z80 floating point: Z80 Floating Point. (line 6)
* Z80 line comment character: Z80-Chars. (line 6)
* Z80 line separator: Z80-Chars. (line 13)
* Z80 options: Z80 Options. (line 6)
* Z80 registers: Z80-Regs. (line 6)
* Z80 support: Z80-Dependent. (line 6)
* Z80 Syntax: Z80 Options. (line 40)
* Z80, case sensitivity: Z80-Case. (line 6)
* Z80, \: Z80-Chars. (line 18)
* Z80-only directives: Z80 Directives. (line 9)
* Z800 addressing modes: Z8000-Addressing. (line 6)
* Z8000 directives: Z8000 Directives. (line 6)
* Z8000 line comment character: Z8000-Chars. (line 6)
* Z8000 line separator: Z8000-Chars. (line 13)
* Z8000 opcode summary: Z8000 Opcodes. (line 6)
* Z8000 options: Z8000 Options. (line 6)
* Z8000 registers: Z8000-Regs. (line 6)
* Z8000 support: Z8000-Dependent. (line 6)
* 'zdaoff' pseudo-op, V850: V850 Opcodes. (line 98)
* 'zero' register, V850: V850-Regs. (line 7)
* zero-terminated strings: Asciz. (line 6)