9.51.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)