@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.

