5.8.6.2 Software Stack Return Values
Functions that use the software stack will pass values back to the calling
function via btemp
variables, provided the value is 4 bytes or less in
size. These are the same registers used as working registers by the register-optimized
reentrant stack. The W register will be used to return byte-sized values for Enhanced
Mid-range device functions that do not have a variable number of arguments. For objects
larger than 4 bytes in size, they are returned on the stack. Reentrant PIC18 functions that
return a value of type __bit
do so using bit #0 in
btemp0
; other devices use the carry bit in the STATUS register.
As there is no frame pointer, accessing the return value location, or other stack-based objects, is not recommended in hand-written assembly code.