13.1 Register Variables
Register variables use one or more working registers, as shown in the following table.
| Variable | Working Register |
|---|---|
char, signed char, unsigned
char |
W0-W13, and W14, if not used as a Frame Pointer |
short, signed short, unsigned
short |
W0-W13, and W14, if not used as a Frame Pointer |
int, signed int, unsigned
int |
W0-W13, and W14, if not used as a Frame Pointer |
void * (or any
pointer) |
W0-W13, and W14, if not used as a Frame Pointer |
long, signed long, unsigned
long |
A pair of contiguous registers, the first of which is a register from the set {W0, W2, W4, W6, W8, W10, W12} |
long long, signed long long, unsigned
long long |
A quadruplet of contiguous registers, the first of which is a register from the set {W0, W4, W8}. Successively higher-numbered registers contain successively more significant bits. |
float |
A pair of contiguous registers, the first of which is a register from the set {W0, W2, W4, W6, W8, W10, W12} |
double1. |
A pair of contiguous registers, the first of which is a register from the set {W0, W2, W4, W6, W8, W10, W12} |
long double |
A quadruplet of contiguous registers, the first of which is a register from the set {W0, W4, W8} |
structure |
1 contiguous register per 2 bytes in the structure |
_Fract
|
W0-W13, and W14, if not used as a Frame Pointer |
long _Fract
|
A pair of contiguous registers, the first of which is a register from the set {W0, W2, W4, W6, W8, W10, W12} |
_Accum
|
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 1:
double is equivalent to long double if
-fno-short-double is used. |
|
