13.1 Register Variables
Register variables use one or more working registers, as shown in the following table.
Variable | Architecture | Register (Note 1) |
---|---|---|
char, signed char, unsigned
char | All | W0-W14 |
short, signed short, unsigned
short | All | W0-W14 |
int, signed int, unsigned
int | All | W0-W14 |
void * (or any
pointer) | All | W0-W14 |
long, signed long, unsigned
long | dsPIC33C/E/F and dsPIC30F | An even pair of contiguous W registers such as W1:W0 |
dsPIC33A | W0-W14 | |
long long, signed long long, unsigned
long long | dsPIC33C/E/F and dsPIC30F | A quadruplet of contiguous W registers such as W3:W2:W1:W0 |
dsPIC33A | An even pair of contiguous W registers such as W1:W0 | |
float | dsPIC33C/E/F and dsPIC30F | An even pair of contiguous W registers such as W1:W0 |
dsPIC33A | Any register from F0-F31 | |
double (Note 2) | dsPIC33C/E/F and dsPIC30F | An even pair of contiguous W registers such as W1:W0 |
dsPIC33A | Any register from F0-F31 | |
long double | dsPIC33C/E/F and dsPIC30F | A quadruplet of contiguous W registers such as W3:W2:W1:W0 |
dsPIC33A | An even pair of registers F registers such as F1:F0 | |
struct | dsPIC33C/E/F and dsPIC30F | 1 contiguous register per 2 bytes in the structure |
dsPIC33A | 1 contiguous register per 4 bytes in the structure | |
_Fract
| dsPIC33C/E/F and dsPIC30F | W0-W14 |
long _Fract
| dsPIC33C/E/F and dsPIC30F | A pair of contiguous registers, the first of which is a register from the set {W0, W2, W4, W6, W8, W10, W12} |
_Accum
| dsPIC33C/E/F and dsPIC30F | Three contiguous registers where the first register starts in the set {W0, W4, W8, W12}; W12 is included only if W14 is not used as a frame pointer. |
Note:
|