LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1096|回复: 0

一段gcc -S 出来的汇编代码, stack的空间分配问题

[复制链接]
发表于 2004-4-27 08:11:37 | 显示全部楼层 |阅读模式
void function(int a, int b, int c) {
char buffer1[5];
int *ret;

ret = buffer1 + 28;
(*ret) += 7;
}

下面是gcc -S 出来的
_function:
pushl%ebp
movl%esp, %ebp
subl$40, %esp
leal-24(%ebp), %eax
addl$28, %eax
movl%eax, -28(%ebp)
movl-28(%ebp), %edx
movl-28(%ebp), %eax
movl(%eax), %eax
addl$7, %eax
movl%eax, (%edx)
leave
ret
为什么gcc为这个function的local variable留了40 bytes这么多?
buffer1的地址是 -24(%ebp) ?,为了alignment也应该只占8个byte,-16(%ebp) 到 (%ebp)这段用来做什么的呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表