返回信息流这是C程序:
int inc_second()
{
int i = 0;
int a = ++i;
return i;
}
这是对应的汇编:
.globl inc_second
.type inc_second, @function
inc_second:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $0, -8(%ebp)
leal -8(%ebp), %eax
incl (%eax)
movl -8(%ebp), %eax
movl %eax, -4(%ebp)
movl -8(%ebp), %eax
leave
ret
.size inc_second, .-inc_second
我想知道的是,为什么先定义的局部变量i在栈中的位置是-8(%ebp)而后定义的a居然在-4(%ebp)
我试过,假如在这个程序中再加上一段打印两个变量地址的代码,这两个变量的位置就正常了,可是。。。为什么现在就不对。。。望大牛赐教
这是一条镜像帖。来源:北邮人论坛 / cpp / #6996同步于 2008/5/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C生成的汇编程序的问题
kdper
2008/5/18镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。