return i++
先取值,再自加1
0x080483f8 <+13>: mov -0x4(%ebp),%eax // i 值存入eax
0x080483fb <+16>: lea 0x1(%eax),%edx //i+1的值存入edx
0x080483fe <+19>: mov %edx,-0x4(%ebp) //edx 的值存入 stack中i的位置;
0x08048401 <+22>: leave
0x08048402 <+23>: ret 当前 eax中的值为i
return ++i
先自加1,再取值
0x080483f8 <+13>: addl $0x1,-0x4(%ebp) // i + 1
0x080483fc <+17>: mov -0x4(%ebp),%eax // i+ 1 存入 eax
0x080483ff <+20>: leave
0x08048400 <+21>: ret //当前eax中的值为i+1
注:-0x4(%ebp) 为i 在stack中的地址;eax保存函数返回值。
lea:将源操作数存入目标寄存器
阅读(1941) | 评论(0) | 转发(0) |