- 论坛徽章:
- 0
|
下面是汇编简单分析。有不对之处请指正。
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
movl $3, -4(%ebp)
subl $4, %esp
movl -4(%ebp), %eax
pushl %eax //右边i++的i入栈(右边第一个参数先入栈)
leal -4(%ebp), %eax
incl (%eax) //执行++
pushl -4(%ebp) //i++入栈 (右边第二个参数入栈)
pushl $.LC0 //第三个参数入栈(为字符串)
call printf //实参入栈完毕,开始函数调用 (所以结果为 :4 3)
addl $16, %esp
movl $3, -4(%ebp)
subl $4, %esp
leal -4(%ebp), %eax //读出i地址 至eax
incl (%eax) //i++
pushl -4(%ebp) //i 入栈
pushl -4(%ebp) //i 入栈
pushl $.LC1 //字符入栈
call printf //所以结果为: 4 4 |
|