@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".
@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
* 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
@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}
@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
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}
@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
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!
@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
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.
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
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
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
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
@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
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
@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
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
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
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
.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
@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
* 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
@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}
@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}}
@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
@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.
@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}
@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,
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
@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,
@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
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
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
@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
@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
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
@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.
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.
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
@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.
@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