Go to the first, previous, next, last section, table of contents.

# AMD 29K Dependent Features

- AMD29K Options: Options
- AMD29K Syntax: Syntax
- AMD29K Floating Point: Floating Point
- AMD29K Directives: AMD 29K Machine Directives
- AMD29K Opcodes: Opcodes

## Options

`as` has no additional command-line options for the AMD 29K family.

## Syntax

- AMD29K-Macros: Macros
- AMD29K-Chars: Special Characters
- AMD29K-Regs: Register Names

### Macros

The macro syntax used on the AMD 29K is like that described in the AMD 29K Family Macro Assembler Specification. Normal `as` macros should still work.

### Special Characters

``;'` is the line comment character.

The character ``?'` is permitted in identifiers (but may not begin an identifier).

### Register Names

General-purpose registers are represented by predefined symbols of the form ``GRnnn'` (for global registers) or ``LRnnn'` (for local registers), where nnn represents a number between `0` and `127`, written with no leading zeros. The leading letters may be in either upper or lower case; for example, ``gr13'` and ``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 ``%%'` to flag the expression as a register number):

    %%expression

---where expression must be an absolute expression evaluating to a number between `0` and `255`. The range [0, 127] refers to global registers, and the range [128, 255] to local registers.

In addition, `as` understands the following protected special-purpose register names for the AMD 29K family:

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

These unprotected special-purpose register names are also recognized:

      ipc    alu    fpe
      ipa    bp     inte
      ipb    fc     fps
      q      cr     exop

## Floating Point

The AMD 29K family uses IEEE floating-point numbers.

## AMD 29K Machine Directives

`.block size , fill`
  This directive emits size bytes, each of value fill. Both size and fill are absolute expressions. If the comma and fill are omitted, fill is assumed to be zero. In other versions of the GNU assembler, this directive is called ``.space'`.

`.cputype`
  This directive is ignored; it is accepted for compatibility with other AMD 29K assemblers.
`.file`
  This directive is ignored; it is accepted for compatibility with other AMD 29K assemblers.

  > Warning: in other versions of the GNU assembler, `.file` is used for the directive called `.app-file` in the AMD 29K support.

`.line`
  This directive is ignored; it is accepted for compatibility with other AMD 29K assemblers.
`.sect`
  This directive is ignored; it is accepted for compatibility with other AMD 29K assemblers.
`.use section name`
  Establishes the section and subsection for the following code; section name may be one of `.text`, `.data`, `.data1`, or `.lit`. With one of the first three section name options, ``.use'` is equivalent to the machine directive section name; the remaining case, ``.use .lit'`, is the same as ``.data 200'`.

## Opcodes

`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 Am29000 User's Manual, Advanced Micro Devices, Inc.

Go to the first, previous, next, last section, table of contents.