QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 973|回复: 1

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

[复制链接]
发表于 2004-4-24 05:10:26 | 显示全部楼层 |阅读模式
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)这段用来做什么的呢?
 楼主| 发表于 2005-5-19 22:48:10 | 显示全部楼层
这个问题早已解决了,忘了回来说一声
man gcc
查查-mpreferred-stack-boundary
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 00:17 , Processed in 0.052326 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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