@c Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.
@ifset GENERIC
@page
@node AMD29K-Dependent
@chapter AMD 29K Dependent Features
@end ifset
@ifclear GENERIC
@node Machine Dependencies
@chapter AMD 29K Dependent Features
@end ifclear

@cindex AMD 29K support
@cindex 29K support
@menu
* AMD29K Options::              Options
* AMD29K Syntax::               Syntax
* AMD29K Floating Point::       Floating Point
* AMD29K Directives::           AMD 29K Machine Directives
* AMD29K Opcodes::              Opcodes
@end menu

@node AMD29K Options
@section Options
@cindex AMD 29K options (none)
@cindex options for AMD29K (none)
@code{@value{AS}} has no additional command-line options for the AMD
29K family.

@node AMD29K Syntax
@section Syntax
@menu
* AMD29K-Macros::		Macros
* AMD29K-Chars::                Special Characters
* AMD29K-Regs::                 Register Names
@end menu

@node AMD29K-Macros
@subsection Macros

@cindex Macros, AMD 29K
@cindex AMD 29K macros
The macro syntax used on the AMD 29K is like that described in the AMD
29K Family Macro Assembler Specification.  Normal @code{@value{AS}}
macros should still work.

@node AMD29K-Chars
@subsection Special Characters

@cindex line comment character, AMD 29K
@cindex AMD 29K line comment character
@samp{;} is the line comment character.

@cindex identifiers, AMD 29K
@cindex AMD 29K identifiers
The character @samp{?} is permitted in identifiers (but may not begin
an identifier).

@node AMD29K-Regs
@subsection Register Names

@cindex AMD 29K register names
@cindex register names, AMD 29K
General-purpose registers are represented by predefined symbols of the
form @samp{GR@var{nnn}} (for global registers) or @samp{LR@var{nnn}}
(for local registers), where @var{nnn} represents a number between
@code{0} and @code{127}, written with no leading zeros.  The leading
letters may be in either upper or lower case; for example, @samp{gr13}
and @samp{LR7} are both valid register names.

You may also refer to general-purpose registers by specifying the
register number as the result of an expression (prefixed with @samp{%%}
to flag the expression as a register number):
@smallexample
%%@var{expression}
@end smallexample
@noindent
---where @var{expression} must be an absolute expression evaluating to a
number between @code{0} and @code{255}.  The range [0, 127] refers to
global registers, and the range [128, 255] to local registers.

@cindex special purpose registers, AMD 29K
@cindex AMD 29K special purpose registers
@cindex protected registers, AMD 29K
@cindex AMD 29K protected registers
In addition, @code{@value{AS}} understands the following protected
special-purpose register names for the AMD 29K family:

@smallexample
  vab    chd    pc0
  ops    chc    pc1
  cps    rbp    pc2
  cfg    tmc    mmu
  cha    tmr    lru
@end smallexample

These unprotected special-purpose register names are also recognized:
@smallexample
  ipc    alu    fpe
  ipa    bp     inte
  ipb    fc     fps
  q      cr     exop
@end smallexample

@node AMD29K Floating Point
@section Floating Point

@cindex floating point, AMD 29K (@sc{ieee})
@cindex AMD 29K floating point (@sc{ieee})
The AMD 29K family uses @sc{ieee} floating-point numbers.

@node AMD29K Directives
@section AMD 29K Machine Directives

@cindex machine directives, AMD 29K
@cindex AMD 29K machine directives
@table @code
@cindex @code{block} directive, AMD 29K
@item .block @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.

In other versions of the @sc{gnu} assembler, this directive is called
@samp{.space}.
@end table

@table @code
@cindex @code{cputype} directive, AMD 29K
@item .cputype
This directive is ignored; it is accepted for compatibility with other
AMD 29K assemblers.

@cindex @code{file} directive, AMD 29K
@item .file
This directive is ignored; it is accepted for compatibility with other
AMD 29K assemblers.

@quotation
@emph{Warning:} in other versions of the @sc{gnu} assembler, @code{.file} is
used for the directive called @code{.app-file} in the AMD 29K support.
@end quotation

@cindex @code{line} directive, AMD 29K
@item .line
This directive is ignored; it is accepted for compatibility with other
AMD 29K assemblers.

@ignore
@c since we're ignoring .lsym...
@cindex @code{reg} directive, AMD 29K
@item .reg @var{symbol}, @var{expression}
@code{.reg} has the same effect as @code{.lsym}; @pxref{Lsym,,@code{.lsym}}.
@end ignore

@cindex @code{sect} directive, AMD 29K
@item .sect
This directive is ignored; it is accepted for compatibility with other
AMD 29K assemblers.

@cindex @code{use} directive, AMD 29K
@item .use @var{section name}
Establishes the section and subsection for the following code;
@var{section name} may be one of @code{.text}, @code{.data},
@code{.data1}, or @code{.lit}.  With one of the first three @var{section
name} options, @samp{.use} is equivalent to the machine directive
@var{section name}; the remaining case, @samp{.use .lit}, is the same as
@samp{.data 200}.
@end table

@node AMD29K Opcodes
@section Opcodes

@cindex AMD 29K opcodes
@cindex opcodes for AMD 29K
@code{@value{AS}} implements all the standard AMD 29K opcodes.  No
additional pseudo-instructions are needed on this family.

For information on the 29K machine instruction set, see @cite{Am29000
User's Manual}, Advanced Micro Devices, Inc.