码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-04-18 22:09:22      阅读:207      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!