13.1 Register Variables

Register variables use one or more working registers, as shown in the following table.

Table 13-1. Register Conventions
VariableRegister (Note 1)
char, signed char, unsigned charW0-W14
short, signed short, unsigned shortW0-W14
int, signed int, unsigned intW0-W14
void * (or any pointer)W0-W14
long, signed long, unsigned longW0-W14
long long, signed long long, unsigned long longAn even pair of contiguous W registers such as W1:W0
floatAny register from F0-F31
double(Note 2)Any register from F0-F31
long doubleAn even pair of registers F registers such as F1:F0
struct1 contiguous register per 4 bytes in the structure
_Fract

_Sat _Fract

W0-W14
long _Fract

_Sat long _Fract

A pair of contiguous registers, the first of which is a register from the set {W0, W2, W4, W6, W8, W10, W12}
Note:
  1. W14 is not available for selection if it is being used as a Frame Pointer.
  2. double is equivalent to long double if -fno-short-double is used.