14.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. | |
