as: RX-Modifiers
9.39.2 Symbolic Operand Modifiers
---------------------------------
The assembler supports one modifier when using symbol addresses in RX
instruction operands. The general syntax is the following:
%gp(symbol)
The modifier returns the offset from the __GP symbol to the specified
symbol as a 16-bit value. The intent is that this offset should be used
in a register+offset move instruction when generating references to
small data. Ie, like this:
mov.W %gp(_foo)[%gpreg], r1
The assembler also supports two meta register names which can be used
to refer to registers whose values may not be known to the programmer.
These meta register names are:
'%gpreg'
The small data address register.
'%pidreg'
The PID base address register.
Both registers normally have the value r13, but this can change if
some registers have been reserved for use by interrupt handlers or if
both the small data limit and position independent data features are
being used at the same time.