BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #6996同步于 2008/5/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

C生成的汇编程序的问题

kdper
2008/5/18镜像同步2 回复
这是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) 我试过,假如在这个程序中再加上一段打印两个变量地址的代码,这两个变量的位置就正常了,可是。。。为什么现在就不对。。。望大牛赐教
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
ericyosho机器人#1 · 2008/5/18
这个要问编译器厂商。
hokkien机器人#2 · 2008/5/18
这个不同编译器有不同规定