懂C++和汇编的朋友进本帖最后由 yeweiouyang 于 2013-03-07 15:08:55 编辑是关于C++中临时变量的问题的,汇
懂C++和汇编的朋友进
本帖最后由 yeweiouyang 于 2013-03-07 15:08:55 编辑 是关于C++中临时变量的问题的,汇编代码有些看不懂,可以解释一下吗?
最好帮忙在汇编代码中加一下注释,谢谢了~
//: ConstReturnValue
#include <cstdio>
class X {
int i;
public:
X(int ii = 0) { i = ii; }
void modify() { ++i; }
};
X f5() {
return X();
}
int main() {
f5() = X(1);
f5().modify();
return 0;
}
Assembly Code:
汇编 c++
15: int main() {
004010C0 push ebp
004010C1 mov ebp,esp
004010C3 sub esp,4Ch
004010C6 push ebx
004010C7 push esi
004010C8 push edi
004010C9 lea edi,[ebp-4Ch]
004010CC mov ecx,13h
004010D1 mov eax,0CCCCCCCCh
004010D6 rep stos dword ptr [edi]
16: f5() = X(1);
004010D8 push 1
004010DA lea ecx,[ebp-8]
004010DD call @ILT+5(X::X) (0040100a); X::X
004010E2 mov esi,dword ptr [eax]
004010E4 lea eax,[ebp-4]
004010E7 push eax
004010E8 call @ILT+0(f5) (00401005)
004010ED add esp,4
004010F0 mov dword ptr [eax],esi
17: f5().modify();
004010F2 lea ecx,[ebp-0Ch]
004010F5 push ecx
004010F6 call @ILT+0(f5) (00401005)
004010FB add esp,4
004010FE mov ecx,eax
00401100 call @ILT+10(X::modify) (0040100f)
18: return 0;
[解决办法]
楼主不会学汇编吗?要不移驾汇编论坛去问问。
