帧指针和栈指针
来源:互联网 发布:学生女装品牌 知乎 编辑:程序博客网 时间:2024/05/22 18:23
原来帧指针指向的也是栈,不过是一个故事的开始。
而栈指针是一个故事的当下。
那帧指针为啥叫ebp,难道b==base。因为帧指针也叫基址指针。
帧指针使得访问函数的参数很容易。
所以任何函数调用进来的第一件事都是保护调用者的帧指针,以使得返回时可以恢复调用者的帧指针。
------------------------------
函数调用的故事
1.各种参数入栈
2.返回地址入栈,这个是用当前指令地址++当作返回地址的
3.调用者的帧指针入栈保护(本次调用的基址指针就指向这里)
4.调用者的寄存器入栈保护
5.被调用的函数的局部变量的分配
依cpu不同会有细小的差别
函数调用时的内存布局:
|-----参数----------|
|---返回地址--------|
|----旧的ebp--------| 新的ebp就会指向这里
|---保存的寄存器状态|
|--本地变量---------|
所以当前ebp-4就是返回地址,当前ebp-8就是调用传来的参数。
堆是可以建立很多个的,但是每个堆是有最大尺寸限制的。
内存有5种,堆,栈,静态,常量,代码
全局变量和静态变量都在静态内存里。
常量字符串都在常量区里。
--------------------------------
缓冲区溢出对栈的破坏是显而易见的,栈上的缓冲区溢出可以覆盖返回地址,被恶意代码攻击,也就谁说栈的缓冲区溢出很容易被利用,那么堆上的缓冲区溢出危险不危险?
- 帧指针和栈指针
- 栈指针esp和帧指针ebp
- 栈指针与帧指针
- 对栈指针和帧指针的认识
- 指针和指针的指针
- 指针和指针的指针
- 指针和指针引用
- 指针和指针变量
- 指针和指针引用
- 指针类型和指针
- 指针和指针变量
- 指针和指针变量
- 指针和指针变量
- 指针和指针数组
- 栈指针与帧指针详谈
- 关于指针和指向指针的指针
- 一般指针和指向指针的指针
- 指针数组,和指向指针的指针
- Rails captcha in ubuntu system
- kscope安装
- spring定时任务--多个任务和执行时间间隔配置
- Java流的读取
- Server 2003 Ghost 自带IIS
- 帧指针和栈指针
- windows 编程 注册热键
- Pending Statistics
- 14--2成绩处理系统
- CPU与缓存
- md5值计算方式
- 并行计算--Java--求π并行实现
- 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)
- 自拍达人