14.7.2 Return Value
Function return values are returned in registers whenever possible. For dsPIC33A, floating point type variables are returned in F registers, otherwise all return values are in W registers. The following chart should help decipher where to place, or look for, return values.
| Return kind | Architecture | Location |
|---|---|---|
| 8-bit integer | All | W0 |
| 16-bit integer | All | W0 |
| 32-bit integer | dsPIC33C/E/F and dsPIC30F | W1:W0 |
| dsPIC33A | W0 | |
| 64-bit integer | dsPIC33C/E/F and dsPIC30F | W3:W2:W1:W0 |
| dsPIC33A | W1:W0 | |
| 32-bit float | dsPIC33C/E/F and dsPIC30F | W1:W0 |
| dsPIC33A | F0 | |
| 64-bit float | dsPIC33C/E/F and dsPIC30F | W3:W2:W1:W0 |
| dsPIC33A | F1:F0 | |
| struct | All | Indirectly through storage pointed to in W0 |
