返回值为对象的函数识别
来源:互联网 发布:mac怎么把图标放桌面 编辑:程序博客网 时间:2024/05/21 10:28
调用部分:
CReturn Return; Return = GetCReturn();004077A7 8D 85 70 FF FF FF lea eax,[ebp-90h] ;返回的对象的栈空间首地址004077AD 50 push eax 004077AE E8 68 A5 FF FF call GetCReturn (0401D1Bh) ;调用函数 先到跳转表 再跳过去004077B3 83 C4 04 add esp,4 ;先把返回的对象放到临时空间中004077B6 B9 0B 00 00 00 mov ecx,0Bh 004077BB 8B F0 mov esi,eax 004077BD 8D 7D 9C lea edi,[ebp-64h] 004077C0 F3 A5 rep movs dword ptr es:[edi],dword ptr [esi] ;再把临时空间中的数据传给结果 为什么要多此一举呢 可能是因为没有开优化吧 004077C2 B9 0B 00 00 00 mov ecx,0Bh 004077C7 8D 75 9C lea esi,[ebp-64h] 004077CA 8D 7D CC lea edi,[Return] 004077CD F3 A5 rep movs dword ptr es:[edi],dword ptr [esi]
函数主体:
CReturn GetCReturn(){004076B0 55 push ebp 004076B1 8B EC mov ebp,esp 004076B3 83 EC 3C sub esp,3Ch 004076B6 56 push esi 004076B7 57 push edi 004076B8 8D 7D C4 lea edi,[ebp-3Ch] ;security_cookie机制004076BB B9 0F 00 00 00 mov ecx,0Fh 004076C0 B8 CC CC CC CC mov eax,0CCCCCCCCh 004076C5 F3 AB rep stos dword ptr es:[edi] 004076C7 A1 08 C0 4B 00 mov eax,dword ptr [__security_cookie (04BC008h)] 004076CC 33 C5 xor eax,ebp 004076CE 89 45 FC mov dword ptr [ebp-4],eax CReturn Return ; Return.m_nNumber = 0;004076D1 C7 45 CC 00 00 00 00 mov dword ptr [Return],0 for (int i = 0; i < 10; i++)004076D8 C7 45 C4 00 00 00 00 mov dword ptr [ebp-3Ch],0 004076DF EB 09 jmp GetCReturn+3Ah (04076EAh) 004076E1 8B 45 C4 mov eax,dword ptr [ebp-3Ch] for (int i = 0; i < 10; i++)004076E4 83 C0 01 add eax,1 004076E7 89 45 C4 mov dword ptr [ebp-3Ch],eax 004076EA 83 7D C4 0A cmp dword ptr [ebp-3Ch],0Ah 004076EE 7D 0F jge GetCReturn+4Fh (04076FFh) { Return.m_nArry[i] = i+1;004076F0 8B 4D C4 mov ecx,dword ptr [ebp-3Ch] 004076F3 83 C1 01 add ecx,1 004076F6 8B 55 C4 mov edx,dword ptr [ebp-3Ch] 004076F9 89 4C 95 D0 mov dword ptr [ebp+edx*4-30h],ecx }004076FD EB E2 jmp GetCReturn+31h (04076E1h) return Return;004076FF B9 0B 00 00 00 mov ecx,0Bh 00407704 8D 75 CC lea esi,[Return] ;局部对象首地址00407707 8B 7D 08 mov edi,dword ptr [ebp+8] ;返回对象首地址;把局部对象赋给返回对象中0040770A F3 A5 rep movs dword ptr es:[edi],dword ptr [esi] 0040770C 8B 45 08 mov eax,dword ptr [ebp+8] }
0 0
- 返回值为对象的函数识别
- 返回值为对象的函数
- 函数参数为对象的识别
- C++函数返回值为对象时,构造析构函数的执行细节
- 返回值为函数指针的函数
- 函数返回的临时对象为const类型,const引用
- 返回值为对象调用拷贝构造函数
- 函数返回值为指针的问题
- 返回值为函数指针的示例
- 返回值为指针的函数解读
- 返回值为指针的函数
- 【期待高手】C++类外调用“返回值为对象的函数”产生的“调用copy构造函数”的问题
- 函数指针,指针函数,返回值为指针的函数
- 临时对象作为函数返回值返回的分析
- 返回值为C/C++函数指针的函数
- c++函数指针和返回值为指针的函数
- 函数返回值为数组
- 返回值为函数指针
- 【iOS遇到的问题】switch控件--在设置switch按钮状态为on或者off,运行app,模拟器黑屏
- 【JZOJ4772】【NOIP2016提高A组模拟9.9】运输妹子
- 黑马程序员:连续两班仅6日就业率突破53%,看编程语言PHP前景
- 句子逆序
- android 不透明度16进制值
- 返回值为对象的函数识别
- 剑指offer - 面试题4:替换空格
- iOS NSAttributedString和NSMutableAttributedString、NSMutableParagraphStyle的详细用法
- Android系统内置下载器服务DownloadManager的使用
- angularjs2 公共部分
- 移动开发需要知道的像素知识『多图』
- 视频兼容
- 图片的膨胀与腐蚀处理
- 求一个整数的二进制表示中1的个数