懂C++跟汇编的朋友进

懂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:

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;
汇编 c++
[解决办法]
楼主不会学汇编吗?要不移驾汇编论坛去问问。