how does a stack grow?
from bottom to top, grows towards lower addresses downwards
what is a stack pointer?
points to the top of the stack (its first element), usually stored in RSP/ESP
what is a stack used for?
store frame pointer, store local variables, pass function arguments, temporarily store register values, return the address of caller function
what is a stack frame?
includes all function-local data, starts below the return address and stops at the stack pointer
what is a frame pointer?
aka base pointer, marks the highest address in the frame, commonly stored in RBP/EBP
steps of a function call?