程序执行时,会将代码编译为可执行文件,执行时,将可执行文件存放在虚拟内存空间中,在代码段进行存放
执行时需要有足够的栈空间存放 局部变量/参数/返回值
栈由高地址向低地址增长,分配给函数的栈空间为栈帧(sf),栈底为栈基(bp),栈顶为栈指针(sp)
栈帧存放的数据有 调用者的栈基/局部变量/返回值/参数/返回地址
程序执行时,cpu用特定寄存器存储栈基和栈指针, 指令指针寄存器存储下一条要执行的指针
函数通过call指令进行跳转,每个函数开始时分配栈帧,结束前会释放自己的栈帧,ret指令将栈恢复到之前的样子