Advertisement
Guest User

saloperie de compilateur

a guest
Jul 24th, 2014
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.21 KB | None | 0 0
  1. /// Code de base
  2.  
  3. int a()
  4. {
  5.     printf("aaaaaaaaaaa\n");
  6.     return 1;
  7. }
  8.  
  9. int _tmain(int argc, _TCHAR* argv[])
  10. {
  11.     try
  12.     {
  13.         MockRepository mocks;
  14.         mocks.ExpectCallFunc(a).Return(2);
  15.         a();
  16.     }
  17.     catch (std::exception &e)
  18.     {
  19.         printf("%s\n", e.what());
  20.     }
  21.     return 0;
  22. }
  23.  
  24.  
  25.  
  26. Dessamblé en debug la partie interessante dans le main
  27.     try
  28.     {
  29. 00412641  mov         dword ptr [ebp-4],0
  30.         MockRepository mocks;
  31. 00412648  lea         ecx,[mocks]
  32. 0041264E  call        HippoMocks::MockRepository::MockRepository (41190Bh)
  33. 00412653  mov         dword ptr [ebp-184h],eax
  34. 00412659  mov         byte ptr [ebp-4],1
  35.         mocks.ExpectCallFunc(a).Return(2);
  36. 0041265D  mov         eax,dword ptr [`wmain'::`2'::__LINE__Var (433004h)]
  37. 00412662  add         eax,4
  38. 00412665  push        eax  
  39. 00412666  push        offset string "d:\\ambroise\\d\xe9veloppement\\dll_es"... (42D918h)
  40. 0041266B  push        offset string "%d\n" (42D914h)
  41. 00412670  mov         ecx,dword ptr [Once+4 (433684h)]
  42. 00412676  push        ecx  
  43. 00412677  mov         edx,dword ptr [Once (433680h)]
  44. 0041267D  push        edx  
  45. 0041267E  push        offset a (4115B9h)
  46. 00412683  lea         ecx,[mocks]
  47. 00412689  call        HippoMocks::MockRepository::RegisterExpect_<0,int> (41168Bh)
  48. 0041268E  mov         dword ptr [ebp-184h],eax
  49. 00412694  push        2    
  50. 00412696  mov         ecx,dword ptr [ebp-184h]
  51. 0041269C  call        HippoMocks::TCall<int,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType,HippoMocks::NullType>::Return (4117FDh)
  52.         a();
  53. 004126A1  call        a (4115B9h)
  54.     }
  55.  
  56.  
  57. La même en release
  58.     try
  59.     {
  60.         MockRepository mocks;
  61. 0040240B  lea         eax,[ebp-64h]
  62. 0040240E  xor         ebx,ebx
  63. 00402410  push        eax  
  64. 00402411  mov         dword ptr [ebp-4],ebx
  65. 00402414  call        HippoMocks::MockRepository::MockRepository (401940h)
  66. 00402419  mov         byte ptr [ebp-4],1
  67.         mocks.ExpectCallFunc(a).Return(2);
  68. 0040241D  mov         ecx,dword ptr [HippoMocks::base_tuple `RTTI Type Descriptor'+34h (407320h)]
  69. 00402423  mov         edx,dword ptr [HippoMocks::base_tuple `RTTI Type Descriptor'+30h (40731Ch)]
  70. 00402429  push        ecx  
  71. 0040242A  push        edx  
  72. 0040242B  lea         eax,[ebp-64h]
  73. 0040242E  push        eax  
  74. 0040242F  call        HippoMocks::MockRepository::RegisterExpect_<0,int> (403890h)
  75. 00402434  push        8    
  76. 00402436  mov         esi,eax
  77. 00402438  call        operator new (403F68h)
  78. 0040243D  add         esp,4
  79. 00402440  cmp         eax,ebx
  80. 00402442  je          main+73h (402453h)
  81. 00402444  mov         dword ptr [eax],offset HippoMocks::ReturnValueWrapper<int>::`vftable' (405468h)
  82. 0040244A  mov         dword ptr [eax+4],2
  83. 00402451  jmp         main+75h (402455h)
  84. 00402453  xor         eax,eax
  85.         a();
  86. 00402455  push        offset string "aaaaaaaaaaa\n" (4052FCh)
  87. 0040245A  mov         dword ptr [esi+4],eax
  88. 0040245D  call        dword ptr [__imp__printf (405120h)]
  89. 00402463  add         esp,4
  90.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement