Next: , Previous: XGATE-Opts, Up: XGATE-Dependent


9.50.2 Syntax

In XGATE RISC syntax, the instruction name comes first and it may be followed by up to three operands. Operands are separated by commas (`,'). as will complain if too many operands are specified for a given instruction. The same will happen if you specified too few operands.

     nop
     ldl  #23
     CMP  R1, R2

The presence of a `;' character or a `!' character anywhere on a line indicates the start of a comment that extends to the end of that line.

A `*' or a `#' character at the start of a line also introduces a line comment, but these characters do not work elsewhere on the line. If the first character of the line is a `#' then as well as starting a comment, the line could also be logical line number directive (see Comments) or a preprocessor control command (see Preprocessing).

The XGATE assembler does not currently support a line separator character.

The following addressing modes are understood for XGATE:

Inherent
`'
Immediate 3 Bit Wide
`#number'
Immediate 4 Bit Wide
`#number'
Immediate 8 Bit Wide
`#number'
Monadic Addressing
`reg'
Dyadic Addressing
`reg, reg'
Triadic Addressing
`reg, reg, reg'
Relative Addressing 9 Bit Wide
`*symbol'
Relative Addressing 10 Bit Wide
`*symbol'
Index Register plus Immediate Offset
`reg, (reg, #number)'
Index Register plus Register Offset
`reg, reg, reg'
Index Register plus Register Offset with Post-increment
`reg, reg, reg+'
Index Register plus Register Offset with Pre-decrement
`reg, reg, -reg'

The register can be either `R0', `R1', `R2', `R3', `R4', `R5', `R6' or `R7'.

Convience macro opcodes to deal with 16-bit values have been added.

Immediate 16 Bit Wide
`#number', or `*symbol'

For example:

          ldw R1, #1024
          ldw R3, timer
          ldw R1, (R1, #0)
          COM R1
          stw R2, (R1, #0)