Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69827
  • 博文数量: 18
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-20 19:05
文章分类
文章存档

2016年(3)

2015年(15)

我的朋友

分类: C/C++

2015-05-24 12:52:35

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) |
0

上一篇:没有了

下一篇:glibc下memcpy解析

给主人留下些什么吧!~~