1.EIP
2.ESP
3.EBP
1.EIP寄存器里存储的是CPU下次要执行的指令的地址。
也就是调用完fun函数后,让CPU知道应该执行main函数中的printf("函数调用结束")语句了。
2.EBP寄存器里存储的是是栈的栈底指针,通常叫栈基址,这个是一开始进行fun()函数调用之前,由ESP传递给EBP的。(在函数调用前你可以这么理解:ESP存储的是栈顶地址,也是栈底地址。)
3.ESP寄存器里存储的是在调用函数fun()之后,栈的栈顶。并且始终指向栈顶。
这里据我的观察从栈内存中访问数据是通过ebp来获取的。
而且我发现esp总是朝ebp方向相反的方向减小。这样一来esp,ebp中间就有一段内存没有被使用,这里感到有些疑惑。