首页 > 其他 > 详细

操作系统是怎么工作的——函数的堆栈框架

时间:2016-04-18 22:08:00      阅读:223      评论:0      收藏:0      [点我收藏+]

1框架模型

技术分享

call指令:

1)将eip中的下一条指令的地址A保存在栈顶;

2)设置eip指向被调用程序的代码处。

ret指令:将地址A恢复到eip中

这样就将函数的调用变为顺序执行的指令流。

2框架形成

技术分享

初始堆栈

1)call xxx(函数),执行call时, cs : eip原来的值指向call下一条指令,该值被保存到栈顶,然后cs : eip的值,指向xxx的入口地址。

技术分享

cs:eip被压栈

2)进入xxx

第一条指令: pushl %ebp

技术分享

上级函数的基地址压栈

第二条指令: movl %esp, %ebp

技术分享

在原来堆栈的地址空间,创建了新的函数调用堆栈

函数体中的常规操作,可能会压栈、出栈
3)退出xxx

movl %ebp,%esp

popl %ebp

技术分享

执行此命令后ebp指向原来的地址

ret

 

技术分享

cs:eip出栈

 

操作系统是怎么工作的——函数的堆栈框架

原文:http://www.cnblogs.com/boyiliushui/p/5406060.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!