免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1940 | 回复: 5
打印 上一主题 下一主题

这个该咋理解(about stack) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-28 21:41 |只看该作者 |倒序浏览
int foo(int a, int b, int c)
{
       .....
       .....
       .....
}

movl 8(%ebp), %ecx                    //get a
movl 12(%ebp), %esi                   //get b
...
...
...
setb -l(%ebp)                              // 堆栈前的立即数是负数?  这是啥意思? 
.....
setge -2(%ebp)                          //  疑问同上

(%ebp) 栈顶数据,那 -1(%ebp) 这不是跑到栈外了么? 哪位大侠给我讲讲这种寻址方式,谢谢了

论坛徽章:
0
2 [报告]
发表于 2010-04-29 08:24 |只看该作者
回复 1# bsdwiki


    栈是往地址小的方向发展的。(-1)%ebp应该是第一个局部变量。

论坛徽章:
0
3 [报告]
发表于 2010-04-29 09:46 |只看该作者
水一贴 不说啥

论坛徽章:
0
4 [报告]
发表于 2010-04-29 09:49 |只看该作者
bp基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址
sp栈顶指针,指向栈顶
而且stack的frame不仅仅有一层

论坛徽章:
0
5 [报告]
发表于 2010-04-29 11:51 |只看该作者
回复  bsdwiki


    栈是往地址小的方向发展的。(-1)%ebp应该是第一个局部变量。
huangwei0413 发表于 2010-04-29 08:24


若int是4字节哩? 若子函数体里有两个int的临时变量,那栈帧结构是咋个分布的哩? 不应该是-1(%ebp) , -4(%ebp)么?

论坛徽章:
0
6 [报告]
发表于 2010-04-29 11:52 |只看该作者
bp基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址
sp栈顶指针,指向栈顶
而且stack的frame不 ...
prolj 发表于 2010-04-29 09:49


多谢P姨,你说的不同栈帧是指为不同的子函数分配的栈么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP