aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/doc/as.texinfo490
1 files changed, 247 insertions, 243 deletions
diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo
index 1303130..1d441e6 100644
--- a/gas/doc/as.texinfo
+++ b/gas/doc/as.texinfo
@@ -2,7 +2,30 @@
@c @tex
@c \special{twoside}
@c @end tex
-@setfilename as
+_if__(_ALL_ARCH__)
+@setfilename as.info
+_fi__(_ALL_ARCH__)
+_if__(_M680X0__ && !_ALL_ARCH__)
+@setfilename as-m680x0.info
+_fi__(_M680X0__ && !_ALL_ARCH__)
+_if__(_AMD29K__ && !_ALL_ARCH__)
+@setfilename as-29k.info
+_fi__(_AMD29K__ && !_ALL_ARCH__)
+@c
+@c NOTE: this manual is marked up for preprocessing with a collection
+@c of m4 macros called "pretex.m4". If you see <_if__> and <_fi__>
+@c scattered around the source, you have the full source before
+@c preprocessing; if you don't, you have the source configured for some
+@c particular architecture (and you can of course get the full source,
+@c with all configurations, from wherever you got this). The full
+@c source needs to be run through m4 before either tex- or info-
+@c formatting: for example,
+@c m4 pretex.m4 none.m4 m680x0.m4 as.texinfo >as-680x0.texinfo
+@c will produce (assuming your path finds either GNU or SysV m4;
+@c Berkeley won't do) a file suitable for formatting.
+@c See the text in "pretex.m4" for a fuller explanation (and the macro
+@c definitions).
+@c
@synindex ky cp
@ifinfo
This file documents the GNU Assembler "as".
@@ -38,21 +61,21 @@ original English.
@end tex
@smallbook
@setchapternewpage odd
-@c if m680x0
-@c @settitle Using GNU as (680x0)
-@c fi m680x0
-@c if am29k
+_if__(_M680X0__)
+@settitle Using GNU as (680x0)
+_fi__(_M680X0__)
+_if__(_AMD29K__)
@settitle Using GNU as (AMD 29K)
-@c fi am29k
+_fi__(_AMD29K__)
@titlepage
@title{Using GNU as}
@subtitle{The GNU Assembler}
-@c if m680x0
-@c @subtitle{for Motorola 680x0}
-@c fi m680x0
-@c if am29k
+_if__(_M680X0__)
+@subtitle{for Motorola 680x0}
+_fi__(_M680X0__)
+_if__(_AMD29K__)
@subtitle{for the AMD 29K family}
-@c fi am29k
+_fi__(_AMD29K__)
@sp 1
@subtitle February 1991
@sp 13
@@ -239,9 +262,7 @@ Assembler Directives
* Single:: @code{.single @var{flonums}}
* Stab:: Store debugging information
* Text:: Change to the text segment
-@c if am29k or sparc
* Word:: Fill memory with 32-bit integers
-@c else (not am29k or sparc)
* Deprecated:: Deprecated Directives
* Machine Options:: Options
* Machine Syntax:: Syntax
@@ -265,16 +286,14 @@ Machine Directives
@chapter Overview
This manual is a user guide to the GNU assembler @code{as}.
-@c pesch@cygnus.com:
-@c The following should be conditional on machine config
-@c if 680x0
-@c This version of the manual describes @code{as} configured to generate
-@c code for Motorola 680x0 architectures.
-@c fi 680x0
-@c if am29k
+_if__(_M680X0__)
+This version of the manual describes @code{as} configured to generate
+code for Motorola 680x0 architectures.
+_fi__(_M680X0__)
+_if__(_AMD29K__)
This version of the manual describes @code{as} configured to generate
code for Advanced Micro Devices' 29K architectures.
-@c fi am29k
+_fi__(_AMD29K__)
@menu
* Invoking:: Invoking @code{as}
@@ -297,12 +316,12 @@ Here is a brief summary of how to invoke GNU @code{as}. For details,
@c to be limited to one line for the header.
@example
as [ -D ] [ -f ] [ -I @var{path} ] [ -k ] [ -L ] [ -o @var{objfile} ] [ -R ] [ -v ] [ -w ]
-@c if 680x0
-@c [ -l ] [ -mc68000 | -mc68010 | -mc68020 ]
-@c fi 680x0
-@c if am29k
-@c@c am29k has no machine-dependent assembler options
-@c fi am29k
+_if__(_M680X0__)
+ [ -l ] [ -mc68000 | -mc68010 | -mc68020 ]
+_fi__(_M680X0__)
+_if__(_AMD29K__)
+@c am29k has no machine-dependent assembler options
+_fi__(_AMD29K__)
[ -- | @var{files} @dots{} ]
@end example
@@ -319,12 +338,12 @@ other assemblers; it has no effect on GNU @code{as}.
Add @var{path} to the search list for @code{.include} directives
@item -k
-@c if am29k
+_if__(_AMD29K__)
This option is accepted but has no effect on the 29K family.
-@c fi am29k
-@c if not am29k
-@c Issue warnings when difference tables altered for long displacements
-@c fi not am29k
+_fi__(_AMD29K__)
+_if__(!_AMD29K__)
+Issue warnings when difference tables altered for long displacements
+_fi__(!_AMD29K__)
@item -L
Keep (in symbol table) local symbols, starting with @samp{L}
@@ -338,13 +357,13 @@ Fold data segment into text segment
@item -W
Suppress warning messages
-@c if 680x0
-@c @item -l
-@c Shorten references to undefined symbols, to one word instead of two
-@c
-@c @item -mc68000 | -mc68010 | -mc68020
-@c Specify what processor in the 68000 family is the target (default 68020)
-@c fi 680x0
+_if__(_M680X0__)
+@item -l
+Shorten references to undefined symbols, to one word instead of two
+
+@item -mc68000 | -mc68010 | -mc68020
+Specify what processor in the 68000 family is the target (default 68020)
+_fi__(_M680X0__)
@item -- | @var{files} @dots{}
Source files to assemble, or standard input
@@ -357,22 +376,24 @@ This document is intended to describe what you need to know to use GNU
notation for symbols, constants, and expressions; the directives that
@code{as} understands; and of course how to invoke @code{as}.
-@c if 680x0
-@c We also cover special features in the 68000 configuration of @code{as},
-@c including pseudo-operations.
-@c fi 680x0
-@c if am29k
+_if__(_M680X0__ && !_ALL_ARCH__)
+We also cover special features in the 68000 configuration of @code{as},
+including pseudo-operations.
+_fi__(_M680X0__ && !_ALL_ARCH__)
+_if__(_AMD29K__ && !_ALL_ARCH__)
We also cover special features in the AMD 29K configuration of @code{as},
including assembler directives.
-@c fi am29k
+_fi__(_AMD29K__ && !_ALL_ARCH__)
-@ignore
- This document also describes some of the
-machine-dependent features of various flavors of the assembler.
+_if__(_ALL_ARCH__)
+This document also describes some of the machine-dependent features of
+various flavors of the assembler.
+_fi__(_ALL_ARCH__)
+_if__(_INTERNALS__)
This document also describes how the assembler works internally, and
provides some information that may be useful to people attempting to
port the assembler to another machine.
-@end ignore
+_fi__(_INTERNALS__)
On the other hand, this manual is @emph{not} intended as an introduction
to programming in assembly language---let alone programming in general!
@@ -395,10 +416,7 @@ qualification.
@code{as} is part of a team of programs that turn a high-level
human-readable series of instructions into a low-level
computer-readable series of instructions. Different versions of
-@code{as} are used for different kinds of computer. In particular,
-at the moment, @code{as} only works for the DEC Vax, the Motorola
-680x0, the Intel 80386, the Sparc, and the National Semiconductor
-32032/32532.
+@code{as} are used for different kinds of computer.
@end ignore
@c There used to be a section "Terminology" here, which defined
@@ -416,11 +434,9 @@ at the moment, @code{as} only works for the DEC Vax, the Motorola
compiler @code{gcc} for use by the linker @code{ld}. Nevertheless,
we've tried to make @code{as} assemble correctly everything that the native
assembler would.
-@c if not am29k
-@ignore
+_if__(_VAX__)
Any exceptions are documented explicitly (@pxref{Machine Dependent}).
-@end ignore
-@c fi not am29k
+_fi__(_VAX__)
This doesn't mean @code{as} always uses the same syntax as another
assembler for the same architecture; for example, we know of several
incompatible versions of 680x0 assembly language syntax.
@@ -551,12 +567,12 @@ file_name:@b{NNN}:Warning Message Text
been given (@pxref{App-File}) it is used for the filename, otherwise the
name of the current input file is used. If a logical line number was
given
-@c if not am29k
-@c (@pxref{Line})
-@c fi not am29k
-@c if am29k
+_if__(!_AMD29K__)
+(@pxref{Line})
+_fi__(!_AMD29K__)
+_if__(_AMD29K__)
(@pxref{Ln})
-@c fi am29k
+_fi__(_AMD29K__)
then it is used to calculate the number printed,
otherwise the actual line in the current source file is printed. The
message text is intended to be self explanatory (in the grand Unix
@@ -599,23 +615,21 @@ in the same order as they were specified (left to right) on the command
line.
@subsection Warn if difference tables altered: @code{-k}
-@c if am29k
+_if__(_AMD29K__)
On the AMD 29K family, this option is allowed, but has no effect. It is
permitted for compatibility with GNU @code{as} on other platforms,
where it can be used to warn when @code{as} alters the machine code
generated for @samp{.word} directives in difference tables. The AMD 29K
family does not have the addressing limitations that sometimes lead to this
alteration on other platforms.
-@c fi am29k
+_fi__(_AMD29K__)
-@c if not am29k
-@ignore
+_if__(!_AMD29K__)
@code{as} sometimes alters the code emitted for directives of the form
@samp{.word @var{sym1}-@var{sym2}}; @pxref{Word}.
You can use the @samp{-k} option if you want a warning issued when this
is done.
-@end ignore
-@c fi not am29k
+_fi__(!_AMD29K__)
@subsection Include Local Labels: @code{-L}
Labels beginning with @samp{L} (upper case only) are called @dfn{local
@@ -665,13 +679,12 @@ still reported.
This chapter describes the machine-independent syntax allowed in a
source file. @code{as} syntax is similar to what many other assemblers
use; it is inspired in BSD 4.2
-@c if not vax
+_if__(!_VAX__)
assembler. @refill
-@c fi not vax
-@c if vax
-@c assembler, except that @code{as} does not
-@c assemble Vax bit-fields.
-@c fi vax
+_fi__(!_VAX__)
+_if__(_VAX__)
+assembler, except that @code{as} does not assemble Vax bit-fields.
+_fi__(_VAX__)
@menu
* Pre-processing:: Pre-processing
@@ -739,22 +752,22 @@ This means you may not nest these comments.
Anything from the @dfn{line comment} character to the next newline
is considered a comment and is ignored. The line comment character is
-@c if vax
-@c @samp{#} on the Vax. @xref{Machine Dependent}. @refill
-@c @fi vax
-@c if 680x0
-@c @samp{|} on the 680x0. @xref{Machine Dependent}. @refill
-@c fi 680x0
-@c if am29k
-@samp{;} for the AMD 29K family. @xref{Machine Dependent}. @refill
-@c fi am29k
-@ignore
-@if all-arch
+_if__(_VAX__)
+@samp{#} on the Vax;
+_fi__(_VAX__)
+_if__(_M680X0__)
+@samp{|} on the 680x0;
+_fi__(_M680X0__)
+_if__(_AMD29K__)
+@samp{;} for the AMD 29K family;
+_fi__(_AMD29K__)
+@pxref{Machine Dependent}. @refill
+
+_if__(_ALL_ARCH__)
On some machines there are two different line comment characters. One
will only begin a comment if it is the first non-whitespace character on
a line, while the other will always begin a comment.
-@fi all-arch
-@end ignore
+_fi__(_ALL_ARCH__)
To be compatible with past assemblers a special interpretation is
given to lines that begin with @samp{#}. Following the @samp{#} an
@@ -786,20 +799,20 @@ not a possible symbol delimiter). @xref{Symbols}.
@node Statements, Constants, Symbol Intro, Syntax
@section Statements
A @dfn{statement} ends at a newline character (@samp{\n})
-@c @if m680x0 (or is this if !am29k?)
-@c or at a semicolon (@samp{;}). The newline or semicolon
-@c fi m680x0 (or !am29k)
-@c if am29k
+_if__(!_AMD29K__)
+or at a semicolon (@samp{;}). The newline or semicolon
+_fi__(!_AMD29K__)
+_if__(_AMD29K__)
or an ``at'' sign (@samp{@@}). The newline or at sign
-@c fi am29k
+_fi__(_AMD29K__)
is considered part
of the preceding statement. Newlines
-@c if m680x0 (or !am29k)
-@c and semicolons
-@c fi m680x0 (or !am29k)
-@c if am29k
+_if__(!_AMD29K__)
+and semicolons
+_fi__(!_AMD29K__)
+_if__(_AMD29K__)
and at signs
-@c fi am29k
+_fi__(_AMD29K__)
within
character constants are an exception: they don't end statements.
It is an error to end any statement with end-of-file: the last
@@ -940,12 +953,12 @@ to strings. So if you want to write the character backslash, you
must write @kbd{'\\} where the first @code{\} escapes the second
@code{\}. As you can see, the quote is an acute accent, not a
grave accent. A newline
-@c if 680x0 (or !am29k)
-@c (or semicolon @samp{;})
-@c fi 680x0 (or !am29k)
-@c if am29k
+_if__(!_AMD29K__)
+(or semicolon @samp{;})
+_fi__(!_AMD29K__)
+_if__(_AMD29K__)
(or at sign @samp{@@})
-@c fi am29k
+_fi__(_AMD29K__)
immediately
following an acute accent is taken as a literal character and does
not count as the end of a statement. The value of a character
@@ -997,18 +1010,16 @@ A flonum is written by writing (in order)
@item
The digit @samp{0}.
@item
-@c if am29k
+_if__(_AMD29K__)
One of the letters @samp{DFPRSX} (in upper or lower case), to tell
@code{as} the rest of the number is a flonum.
-@c fi am29k
-@c if not am29k
-@ignore
+_fi__(_AMD29K__)
+_if__(!_AMD29K__)
A letter, to tell @code{as} the rest of the number is a flonum. @kbd{e}
is recommended. Case is not important. (Any otherwise illegal letter
will work here, but that might be changed. Vax BSD 4.2 assembler seems
to allow any of @samp{defghDEFGH}.)
-@end ignore
-@c fi not am29k
+_fi__(!_AMD29K__)
@item
An optional sign: either @samp{+} or @samp{-}.
@item
@@ -1020,15 +1031,13 @@ or more decimal digits.
An optional exponent, consisting of:
@itemize @bullet
@item
-@c if am29k
+_if__(_AMD29K__)
An @samp{E} or @samp{e}.
-@c if not am29k
-@ignore
+_if__(!_AMD29K__)
A letter; the exact significance varies according to
the computer that executes the program. @code{as}
accepts any letter for now. Case is not important.
-@end ignore
-@c fi not am29k
+_fi__(!_AMD29K__)
@item
Optional sign: either @samp{+} or @samp{-}.
@item
@@ -1303,15 +1312,15 @@ output.
Subsegments are optional. If you don't use subsegments, everything
will be stored in subsegment number zero.
-@c @if not am29k
-@c Each subsegment is zero-padded up to a multiple of four bytes.
-@c (Subsegments may be padded a different amount on different flavors
-@c of @code{as}.)
-@c fi not am29k
-@c if am29k
+_if__(!_AMD29K__)
+Each subsegment is zero-padded up to a multiple of four bytes.
+(Subsegments may be padded a different amount on different flavors
+of @code{as}.)
+_fi__(!_AMD29K__)
+_if__(_AMD29K__)
On the AMD 29K family, no particular padding is added to segment sizes;
GNU as forces no alignment on this platform.
-@c fi am29k
+_fi__(_AMD29K__)
Subsegments appear in your object file in numeric order, lowest numbered
to highest. (All this to be compatible with other people's assemblers.)
The object file contains no representation of subsegments; @code{ld} and
@@ -1402,10 +1411,10 @@ character may be followed by any string of digits, letters,
underscores and dollar signs. Case of letters is significant:
@code{foo} is a different symbol name than @code{Foo}.
-@c if am29k
+_if__(_AMD29K__)
For the AMD 29K family, @samp{?} is also allowed in the
body of a symbol name, though not at its beginning.
-@c fi am29k
+_fi__(_AMD29K__)
Each symbol has exactly one name. Each name in an assembly language
program refers to exactly one symbol. You may use that symbol name any
@@ -1478,19 +1487,19 @@ The special symbol @samp{.} refers to the current address that
.long .} will cause @code{melvin} to contain its own address.
Assigning a value to @code{.} is treated the same as a @code{.org}
directive. Thus, the expression @samp{.=.+4} is the same as saying
-@c if not am29k
-@c @samp{.space 4}.
-@c fi not am29k
-@c if am29k
+_if__(!_AMD29K__)
+@samp{.space 4}.
+_fi__(!_AMD29K__)
+_if__(_AMD29K__)
@samp{.block 4}.
-@c fi am29k
+_fi__(_AMD29K__)
@node Symbol Attributes, , Dot, Symbols
@section Symbol Attributes
Every symbol has these attributes: Value, Type, Descriptor, and ``Other''.
-@c if internals
-@c The detailed definitions are in <a.out.h>.
-@c fi internals
+_if__(_INTERNALS__)
+The detailed definitions are in _0__<a.out.h>_1__.
+_fi__(_INTERNALS__)
If you use a symbol without defining it, @code{as} assumes zero for
all these attributes, and probably won't warn you. This makes the
@@ -1675,12 +1684,12 @@ Highest Precedence
@dfn{Division}. Truncation is the same as the C operator @samp{/}
@item %
@dfn{Remainder}.
-@item <
-@itemx <<
-@dfn{Shift Left}. Same as the C operator @samp{<<}
-@item >
-@itemx >>
-@dfn{Shift Right}. Same as the C operator @samp{>>}
+@item _0__<_1__
+@itemx _0__<<_1__
+@dfn{Shift Left}. Same as the C operator @samp{_0__<<_1__}
+@item _0__>_1__
+@itemx _0__>>_1__
+@dfn{Shift Right}. Same as the C operator @samp{_0__>>_1__}
@end table
@item
@@ -1761,9 +1770,7 @@ Similarly, you can't subtract quantities from two different segments.
* Single:: @code{.single @var{flonums}}
* Stab:: Store debugging information
* Text:: Change to the text segment
-@c if am29k or sparc
* Word:: Fill memory with 32-bit integers
-@c else (not am29k or sparc)
* Deprecated:: Deprecated Directives
* Machine Options:: Options
* Machine Syntax:: Syntax
@@ -1852,14 +1859,13 @@ to the low 16 bits of an absolute expression.
@section @code{.double @var{flonums}}
@code{.double} expects zero or more flonums, separated by commas. It assembles
floating point numbers.
-@c if all-arch
-@c The exact kind of floating point numbers
-@c emitted depends on how @code{as} is configured. @xref{Machine
-@c Dependent}.
-@c fi all-arch
-@c if am29k
+_if__(_ALL_ARCH__)
+The exact kind of floating point numbers emitted depends on how
+@code{as} is configured. @xref{Machine Dependent}.
+_fi__(_ALL_ARCH__)
+_if__(_AMD29K__)
On the AMD 29K family the floating point format used is IEEE.
-@c fi am29k
+_fi__(_AMD29K__)
@node Else, End, Double, Pseudo Ops
@section @code{.else}
@@ -1916,14 +1922,14 @@ assumed zero. If the first comma and following tokens are absent,
@section @code{.float @var{flonums}}
This directive assembles zero or more flonums, separated by commas. It
has the same effect as @code{.single}.
-@c if all-arch
-@c The exact kind of floating point numbers emitted depends on how
-@c @code{as} is configured.
-@c @xref{Machine Dependent}.
-@c fi all-arch
-@c if am29k
+_if__(_ALL_ARCH__)
+The exact kind of floating point numbers emitted depends on how
+@code{as} is configured.
+@xref{Machine Dependent}.
+_fi__(_ALL_ARCH__)
+_if__(_AMD29K__)
The floating point format used for the AMD 29K family is IEEE.
-@c fi am29k
+_fi__(_AMD29K__)
@node Global, Ident, Float, Pseudo Ops
@section @code{.global @var{symbol}}, @code{.globl @var{symbol}}
@@ -2002,28 +2008,26 @@ bss segment, so at run-time the bytes will start off zeroed.
@var{Symbol} is not declared global (@pxref{Global}), so is normally
not visible to @code{ld}.
-@c if not am29k
-@ignore
+_if__(!_AMD29K__)
@node Line, Ln, Lcomm, Pseudo Ops
@section @code{.line @var{line-number}}, @code{.ln @var{line-number}}
@code{.line}, and its alternate spelling @code{.ln}, tell
-@end ignore
-@c fi not am29k
-@c if am29k
+_fi__(!_AMD29K__)
+_if__(_AMD29K__)
@node Ln, List, Line, Pseudo Ops
@section @code{.ln @var{line-number}}
Tell
-@c fi am29k
+_fi__(_AMD29K__)
@code{as} to change the logical line number. @var{line-number} must be
an absolute expression. The next line will have that logical line
number. So any other statements on the current line (after a statement
separator character
-@c if am29k
+_if__(_AMD29K__)
@samp{@@})
-@c fi am29k
-@c if not am29k
-@c @code{;})
-@c fi not am29k
+_fi__(_AMD29K__)
+_if__(!_AMD29K__)
+@code{;})
+_fi__(!_AMD29K__)
will be reported as on logical line number
@var{logical line number} @minus{} 1.
One day this directive will be unsupported: it is used only
@@ -2121,38 +2125,36 @@ file is the last value stored into it.
@node Short, Single, Set, Pseudo Ops
@section @code{.short @var{expressions}}
-@c if not (sparc or amd29k)
-@c @code{.short} is the same as @samp{.word}. @xref{Word}.
-@c fi not (sparc or amd29k)
-@c if (sparc or amd29k)
+_if__(! (_SPARC__ || _AMD29K__) )
+@code{.short} is the same as @samp{.word}. @xref{Word}.
+_fi__(! (_SPARC__ || _AMD29K__) )
+_if__(_SPARC__ || _AMD29K__)
This expects zero or more @var{expressions}, and emits
a 16 bit number for each.
-@c fi (sparc or amd29k)
+_fi__(_SPARC__ || _AMD29K__)
@node Single, Space, Short, Pseudo Ops
@section @code{.single @var{flonums}}
This directive assembles zero or more flonums, separated by commas. It
has the same effect as @code{.float}.
-@c if all-arch
-@c The exact kind of floating point numbers emitted depends on how
-@c @code{as} is configured. @xref{Machine Dependent}.
-@c fi all-arch
-@c if am29k
+_if__(_ALL_ARCH__)
+The exact kind of floating point numbers emitted depends on how
+@code{as} is configured. @xref{Machine Dependent}.
+_fi__(_ALL_ARCH__)
+_if__(_AMD29K__)
The floating point format used for the AMD 29K family is IEEE.
-@c fi am29k
+_fi__(_AMD29K__)
@node Space, Space, Single, Pseudo Ops
-@c if not am29k
-@ignore
+_if__(!_AMD29K__)
@section @code{.space @var{size} , @var{fill}}
This directive emits @var{size} bytes, each of value @var{fill}. Both
@var{size} and @var{fill} are absolute expressions. If the comma
and @var{fill} are omitted, @var{fill} is assumed to be zero.
-@end ignore
-@c fi not am29k
+_fi__(!_AMD29K__)
-@c if am29k
+_if__(_AMD29K__)
@section @code{.space}
This directive is ignored; it is accepted for compatibility with other
AMD 29K assemblers.
@@ -2161,7 +2163,7 @@ AMD 29K assemblers.
@emph{Warning:} In other versions of GNU @code{as}, the directive
@code{.space} has the effect of @code{.block} @xref{Machine Directives}.
@end quotation
-@c fi am29k
+_fi__(_AMD29K__)
@node Stab, Text, Space, Pseudo Ops
@section @code{.stabd, .stabn, .stabs}
@@ -2228,24 +2230,21 @@ is used.
@section @code{.word @var{expressions}}
This directive expects zero or more @var{expressions}, of any segment,
separated by commas.
-@c if sparc or amd29k
+_if__(_SPARC__ || _AMD29K__)
For each expression, @code{as} emits a 32-bit number.
-@c fi sparc or amd29k
-@c if not (sparc or amd29k)
-@c For each expression, @code{as} emits a 16-bit number.
-@c fi not (sparc or amd29k)
-@ignore
-@c if all-arch
-The byte order
-of the expression depends on what kind of computer will run the
-program.
-@c fi all-arch
-@end ignore
-
-@ignore
-@c on the 29k this doesn't happen---32-bit addressability, period; no
-@c long/short jumps.
-@c if not am29k
+_fi__(_SPARC__ || _AMD29K__)
+_if__(! (_SPARC__ || _AMD29K__) )
+For each expression, @code{as} emits a 16-bit number.
+_fi__(! (_SPARC__ || _AMD29K__) )
+
+_if__(_ALL_ARCH__)
+The byte order of the expression depends on what kind of computer will
+run the program.
+_fi__(_ALL_ARCH__)
+
+@c on the 29k the "special treatment to support compilers" doesn't
+@c happen---32-bit addressability, period; no long/short jumps.
+_if__(!_AMD29K__)
@subsection Special Treatment to support Compilers
In order to assemble compiler output into something that will work,
@@ -2269,15 +2268,13 @@ long-jump to @code{sym4} will be included in the secondary jump table,
and the @code{.word} directives will be adjusted to contain @code{sym3}
minus the address of the long-jump to @code{sym4}; and so on, for as many
entries in the original jump table as necessary.
-@end ignore
-@ignore
-@c if internals
+
+_if__(_INTERNALS__)
@emph{This feature may be disabled by compiling @code{as} with the
@samp{-DWORKING_DOT_WORD} option.} This feature is likely to confuse
assembly language programmers.
-@c fi internals
-@end ignore
-
+_fi__(_INTERNALS__)
+_fi__(!_AMD29K__)
@node Deprecated, Machine Dependent, Word, Pseudo Ops
@section Deprecated Directives
@@ -2290,24 +2287,17 @@ They are included for compatibility with older assemblers.
@end table
@node Machine Dependent, Machine Dependent, Pseudo Ops, Top
-@c if all-arch
-@c chapter Machine Dependent Features
-@c fi all-arch
-@c if 680x0
-@c chapter Machine Dependent Features: Motorola 680x0
-@c fi 680x0
-@c if amd29k
-@chapter Machine Dependent Features: AMD 29K
-@c fi amd29k
-@c pesch@cygnus.com: This version of the manual is specifically hacked
-@c for gas on a particular machine.
-@c We should have a config method of
-@c automating this; in the meantime, use ignore
-@c for the other architectures (or for their stubs)
-@ignore
-@c if all-arch
+_if__(_ALL_ARCH__)
+@chapter Machine Dependent Features
+_fi__(_ALL_ARCH__)
+
+_if__(_VAX__ && !_ALL_ARCH__)
+@chapter Machine Dependent Features: VAX
+_fi__(_VAX__ && !_ALL_ARCH__)
+_if__(_ALL_ARCH__)
@section Vax
-@c fi all-arch
+_fi__(_ALL_ARCH__)
+_if__(_VAX__)
@subsection Options
The Vax version of @code{as} accepts any of the following options,
@@ -2516,9 +2506,12 @@ separated.
@subsection Not Supported
Vax bit fields can not be assembled with @code{as}. Someone
can add the required code if they really need it.
-@end ignore
+_fi__(_VAX__)
-@c if am29k
+_if__(_AMD29K__ && !_ALL_ARCH__)
+@chapter Machine Dependent Features: AMD 29K
+_fi__(_AMD29K__ && !_ALL_ARCH__)
+_if__(_AMD29K__)
@node Machine Options, Machine Syntax, Machine Dependent, Machine Dependent
@section Options
GNU @code{as} has no additional command-line options for the AMD
@@ -2652,9 +2645,11 @@ For information on the 29K machine instruction set, see @cite{Am29000
User's Manual}, Advanced Micro Devices, Inc.
-@c fi am29k
-@ignore
-@c if 680x0
+_fi__(_AMD29K__)
+_if__(_M680X0__ && !_ALL_ARCH__)
+@chapter Machine Dependent Features: Motorola 680x0
+_fi__(_M680X0__ && !_ALL_ARCH__)
+_if__(_M680X0__)
@section Options
The 680x0 version of @code{as} has two machine dependent options.
One shortens undefined references from 32 to 16 bits, while the
@@ -2687,12 +2682,10 @@ Size modifiers are appended directly to the end of the opcode without an
intervening period. For example, write @samp{movl} rather than
@samp{move.l}.
-@c pesch@cygnus.com: Vintage Release c1.37 isn't compiled with
-@c SUN_ASM_SYNTAX.
-@c ignore
+_if__(_INTERNALS__)
If @code{as} is compiled with SUN_ASM_SYNTAX defined, it will also allow
Sun-style local labels of the form @samp{1$} through @samp{$9}.
-@c end ignore
+_fi__(_INTERNALS__)
In the following table @dfn{apc} stands for any of the address
registers (@samp{a0} through @samp{a7}), nothing, (@samp{}), the
@@ -2739,12 +2732,12 @@ or @samp{@var{apc}@@(@var{register}:@var{size}:@var{scale})@@(@var{digits})}
@item Absolute
@samp{@var{symbol}}, or @samp{@var{digits}}
-@c ignore
+@ignore
@c pesch@cygnus.com: gnu, rich concur the following needs careful
@c research before documenting.
, or either of the above followed
by @samp{:b}, @samp{:w}, or @samp{:l}.
-@c end ignore
+@end ignore
@end table
@section Floating Point
@@ -2787,11 +2780,11 @@ This directive is identical to a @code{.space} directive.
@c pesch@cygnus.com: I don't see any point in the following
@c paragraph. Bugs are bugs; how does saying this
@c help anyone?
-@c ignore
+@ignore
Danger: Several bugs have been found in the opcode table (and
fixed). More bugs may exist. Be careful when using obscure
instructions.
-@c end ignore
+@end ignore
@subsection Branch Improvement
@@ -2892,10 +2885,9 @@ The immediate character is @samp{#} for Sun compatibility. The
line-comment character is @samp{|}. If a @samp{#} appears at the
beginning of a line, it is treated as a comment unless it looks like
@samp{# line file}, in which case it is treated normally.
-@c fi 680x0
-@end ignore
+_fi__(_M680X0__)
-@c pesch@cygnus.com: see remarks at ignore for vax.
+@c pesch@cygnus.com: conditionalize, rather than ignore, when filled in.
@ignore
@section 32x32
@section Options
@@ -2917,7 +2909,13 @@ understands extended precision numbers.
@subsection Machine Directives
The 32x32 has no machine dependent directives.
+@end ignore
+@c pesch@cygnus.com: stop ignoring this when "syntax" section filled in
+@ignore
+_if__(_SPARC__ && !_ALL_ARCH__)
+@chapter Machine Dependent Features: SPARC
+_fi__(_SPARC__ && !_ALL_ARCH__)
@section Sparc
@subsection Options
The sparc has no machine dependent options.
@@ -2967,7 +2965,12 @@ On the Sparc, the .word directive produces 32 bit values,
instead of the 16 bit values it produces on every other machine.
@end table
+@end ignore
+_if__(_I80386__ && !_ALL_ARCH__)
+@chapter Machine Dependent Features: SPARC
+_fi__(_I80386__ && !_ALL_ARCH__)
+_if__(_I80386__)
@section Intel 80386
@subsection Options
The 80386 has no machine dependent options.
@@ -3273,10 +3276,11 @@ is an immediate mode expression and the second operand is a register.
This is just a shorthand, so that, multiplying @samp{%eax} by 69, for
example, can be done with @samp{imul $69, %eax} rather than @samp{imul
$69, %eax, %eax}.
-@end ignore
-@c pesch@cygnus.com: we also ignore the following chapters, but for
-@c a different reason---internals are changing
-@c rapidly. These may need to be moved to another
+_fi__(_I80386__)
+
+
+@c pesch@cygnus.com: we ignore the following chapters, since internals are
+@c changing rapidly. These may need to be moved to another
@c book anyhow, if we adopt the model of user/modifier
@c books.
@ignore
@@ -3633,8 +3637,8 @@ inside the object file. Perhaps we should use the one in
@file{/usr/include}?
@item as.h
-This defines all the globally useful things, and pulls in <stdio.h>
-and <assert.h>.
+This defines all the globally useful things, and pulls in _0__<stdio.h>_1__
+and _0__<assert.h>_1__.
@item bignum.h
This defines macros useful for dealing with bignums.
@@ -4028,7 +4032,7 @@ This function stores a relocation fixup to be acted on later.
@var{size} is the size of the relocation, and is usually 1 (a single byte),
2 (sixteen bits), or 4 (a longword).
The value @var{add_symbol} @minus{} @var{sub_symbol} + @var{offset}, is added to the byte(s)
-at @var{frag->literal[where]}. If @var{pcrel} is non-zero, the address of the
+at _0__@var{frag->literal[where]}_1__. If @var{pcrel} is non-zero, the address of the
location is subtracted from the result. A relocation entry is also added
to the @file{a.out} file. @var{add_symbol}, @var{sub_symbol}, and/or
@var{offset} may be NULL.@refill