栈帧结构(程序调用栈结构)详解
知识点扫描
ESP:栈指针寄存器(extended stack pointer),放着一个指针,该指针永远指向系统栈最上面一个栈帧(栈帧不理解没关系)的栈顶。
EBP:基址指针寄存器(extended base pointer),放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。
EIP:指令寄存器(extended instruction pointer),存储CPU下一个要执行的指令的地址。
简介
栈帧结构就是在程序运行中发生函数调用时,会产生一个调用栈,调用栈里面存储四类数据,分别为:函数参数、程序返回地址、基地址寄存器EBP的值以及局部变量。为了让大家更好地理解栈帧结构、函数调用和返回过程、参数和局部变量存储原理,下面将用一个小程序调试和分析过程来进一步说明。
本文小程序代码如下:
#include<stdio.h>
int multiply(int x