The stack is a very important structure to
understand when developing a debugger. The stack stores information
about how a function is called, the parameters it takes, and how it
should return after it is finished executing. The stack is a First In,
Last Out (FILO) structure, where arguments are pushed onto the stack for
a function call and popped off the stack when the function is finished.
The ESP register is used to track the very top of the stack frame, and
the EBP register is used to track the bottom of the stack frame. The
stack grows from high memory addresses to low memory addresses. Let's
use our previously covered function
my_socks() as a
simplified example of how the stack works.
int my_socks(color_one, ...