- 论坛徽章:
- 0
|
一个可执行程序中,.data段存放初始化的数据,.bss段存放未初始化的数据。
可是局部变量却直接以指令的形式写到了代码中:
这个简单的程序:
#include <stdlib.h>
void dosth()
{
int i=2;
printf("%d\n",i);
}
int main()
{
dosth();
}
objdump出来发现:
080483a4 <dosth>:
80483a4: 55 push %ebp
80483a5: 89 e5 mov %esp,%ebp
80483a7: 83 ec 18 sub $0x18,%esp
80483aa: c7 45 fc 02 00 00 00 movl $0x2,0xfffffffc(%ebp) <----直接赋值
80483b1: 8b 45 fc mov 0xfffffffc(%ebp),%eax
80483b4: 89 44 24 04 mov %eax,0x4(%esp)
80483b8: c7 04 24 c0 84 04 08 movl $0x80484c0,(%esp)
80483bf: e8 f4 fe ff ff call 80482b8 <printf@plt>
80483c4: c9 leave
80483c5: c3 ret
难道我又理解错了? |
|