- used to call and return from subroutines (nothing else)
- stores addresses → 16-bit numbers (2 bytes)
- used to reserve memory (on the 4KB ram) but not needed anymore
- usually at least 16 two-byte entries (minimum requirement) for stack
- requires implementation of stack in C
- two ways: fixed size using array (lower overhead) or dynamically sized using linked list (mild overhead)
- opting to create fixed size as minimum is 16 two-byte entries
uint16_t
- to be safe, support 64 entries (which is 4x the minimum size)