Microchip Technology SW006023-2 Data Sheet

Page of 238
MPLAB
®
 XC32 C/C++ Compiler User’s Guide
DS51686E-page 162
 2012 Microchip Technology Inc.
Constraint letters and modifiers supported by the compiler are listed in Table 14-1 
through Table 14-4.
TABLE 14-1:
REGISTER CONSTRAINT LETTERS SUPPORTED BY THE 
COMPILER
TABLE 14-2:
INTEGER CONSTRAINT LETTERS SUPPORTED BY THE 
COMPILER
TABLE 14-3:
GENERAL CONSTRAINT LETTERS SUPPORTED BY THE 
COMPILER
TABLE 14-4:
CONSTRAINT MODIFIERS SUPPORTED BY THE COMPILER
Examples:
Letter
Constraint
c
A register suitable for use in an indirect jump
d
An address register. This is equivalent to 
@code{r}
 unless generating MIPS16 
code
ka
Registers that can be used as the target of multiply-accumulate instructions
l
The 
@code{lo}
 register. Use this register to store values that are no bigger 
than a word
x
The concatenated 
@code{hi}
 and 
@code{lo}
 registers. Use this register to 
store double-word values
Letter
Constraint
I
A signed 32-bit constant (for arithmetic instructions)
J
Integer zero
K
An unsigned 32-bit constant (for logic instructions)
L
A signed 32-bit constant in which the lower 32 bits are zero. Such constants can 
be loaded using 
@code{lui}
M
A constant that cannot be loaded using 
@code{lui}
@code{addiu}
or 
@code{ori}
N
A constant in the range -65535 to -1 (inclusive)
O
A signed 15-bit constant
P
A constant in the range 1 to 65535 (inclusive)
Letter
Constraint
R
An address that can be used in a non-macro load or store.
Letter
Constraint
=
Means that this operand is write-only for this instruction: the previous value is 
discarded and replaced by output data
+
Means that this operand is both read and written by the instruction
&
Means that this operand is an 
earlyclobber
 operand, which is modified 
before the instruction is finished using the input operands. Therefore, this 
operand may not lie in a register that is used as an input operand or as part of 
any memory address
d
Second register for operand number n, i.e.,  
%d
n
..
q
Fourth register for operand number n, i.e.,  
%q
n
..
t
Third register for operand number n, i.e.,  
%t
n
..