ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一天一篇(2)

一天一篇(2)

原创 Linux操作系统 作者:huixshh 时间:2014-01-22 20:45:12 0 删除 编辑
c语言中的栈分布。
高地址:存储命令行参数和环境变量.
未初始化的数据:由exec初始化位0
初始化的数据
低地址:正文
其中正文段和初始化的数据段是由exec从程序文件中读入。
先讲栈,函数中的参数是在栈里的,但是传入的方式要根据调用约定,例如在通常的x86系统中,是通过push和pop来传递参数,而在x64中,则普遍是通过直接mov了。
在函数里,声明的变量被称为局部变量,也可以被称为自动变量,是被分配在栈中的。
例如:
int test()
{
   int i=3;
   {
        int j=2;
        int i=1;
   }
}
调用函数开辟了新栈,通过bp=sp和sp- x来开辟新栈,bp保留上次的sp值,sp减去某个值x来改变栈,在函数test中,i被分配test的栈里.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29454248/viewspace-1074275/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 一天一篇(1)
下一篇: 一天一篇(3)
请登录后发表评论 登录
全部评论

注册时间:2014-01-21

  • 博文量
    6
  • 访问量
    7050