14.1 Software Stack
The PIC32 devices use what is referred to in this user’s guide as a “software stack.” This is the typical stack arrangement employed by most computers and is ordinary data memory accessed by a push-and-pop type instruction and a stack pointer register. The term “hardware stack” is used to describe the stack employed by Microchip 8-bit devices, which is only used for storing function return addresses.
The PIC32 devices use a dedicated stack pointer register sp (register
29) for use as a software Stack Pointer. All processor stack operations, including
function calls, interrupts and exceptions, use the software stack. It points to the next
free location on the stack. The stack grows downward, towards lower memory
addresses.
--defsym _min_stack_size linker command line option. An
example of allocating a stack of 2048 bytes using the command line
is:xc32-gcc foo.c -Wl,--defsym,_min_stack_size=2048- Register 29 (
sp) – This is the Stack Pointer. It points to the next free location on the stack.
- Register 30 (
fp) – This is the Frame Pointer. It points to the current function’s frame.
No stack overflow detection is supplied.
The C/C++ run-time start-up module initializes the stack pointer during the start-up and initialization sequence, see Initialize Stack Pointer and Heap.
