Previous: S12Z Addressing Modes, Up: S12Z Syntax


9.24.2.3 Register Notation

Without a register prefix (see S12Z Options), S12Z assembler code is expected in the traditional format like this:

     lea s, (-2,s)
     st d2, (0,s)
     ld x,  symbol
     tfr d2, d6
     cmp d6, #1532

However, if as is started with (for example) ‘-mreg-prefix=%’ then all register names must be prefixed with ‘%’ as follows:

     lea %s, (-2,%s)
     st %d2, (0,%s)
     ld %x,  symbol
     tfr %d2, %d6
     cmp %d6, #1532

The register prefix feature is intended to be used by compilers to avoid ambiguity between symbols and register names. Consider the following assembler instruction:

     st d0, d1

The destination operand of this instruction could either refer to the register ‘D1’, or it could refer to the symbol named “d1”. If the latter is intended then as must be invoked with ‘-mreg-prefix=pfx’ and the code written as

     st pfxd0, d1

where pfx is the chosen register prefix. For this reason, compiler back-ends should choose a register prefix which cannot be confused with a symbol name.