Advertisement
drout

Comparacao de codigo gerado por IF vs SWITCH

Aug 1st, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 KB | None | 0 0
  1.  
  2.     // c++ source ====================================================================
  3.    
  4.     int a = 0;
  5.  
  6.     {
  7.         if( a == 0 )
  8.             a = 1;
  9.         else if( a == 1 )
  10.             a = 2;
  11.         else
  12.             a = 0;
  13.     }
  14.  
  15.     {
  16.         switch( a )
  17.         {
  18.         case 0:
  19.             a = 1; break;
  20.         case 1:
  21.             a = 2; break;
  22.         default:
  23.             a = 0;
  24.         }
  25.     }
  26.  
  27.     // disassembly ====================================================================
  28.  
  29.     int a = 0;
  30. 00A713BE  mov         dword ptr [a],0  
  31.  
  32.     {
  33.         if( a == 0 )
  34. 00A713C5  cmp         dword ptr [a],0  
  35. 00A713C9  jne         wmain+34h (0A713D4h)  
  36.             a = 1;
  37. 00A713CB  mov         dword ptr [a],1  
  38. 00A713D2  jmp         wmain+4Ah (0A713EAh)  
  39.         else if( a == 1 )
  40. 00A713D4  cmp         dword ptr [a],1  
  41. 00A713D8  jne         wmain+43h (0A713E3h)  
  42.             a = 2;
  43. 00A713DA  mov         dword ptr [a],2  
  44.         else
  45. 00A713E1  jmp         wmain+4Ah (0A713EAh)  
  46.             a = 0;
  47. 00A713E3  mov         dword ptr [a],0  
  48.     }
  49.  
  50.     {
  51.         switch( a )
  52. 00A713EA  mov         eax,dword ptr [a]  
  53. 00A713ED  mov         dword ptr [ebp-0D0h],eax  
  54. 00A713F3  cmp         dword ptr [ebp-0D0h],0  
  55. 00A713FA  je          wmain+67h (0A71407h)  
  56. 00A713FC  cmp         dword ptr [ebp-0D0h],1  
  57. 00A71403  je          wmain+70h (0A71410h)  
  58. 00A71405  jmp         wmain+79h (0A71419h)  
  59.         {
  60.         case 0:
  61.             a = 1; break;
  62. 00A71407  mov         dword ptr [a],1  
  63. 00A7140E  jmp         wmain+80h (0A71420h)  
  64.         case 1:
  65.             a = 2; break;
  66. 00A71410  mov         dword ptr [a],2  
  67. 00A71417  jmp         wmain+80h (0A71420h)  
  68.         default:
  69.             a = 0;
  70. 00A71419  mov         dword ptr [a],0  
  71.         }
  72.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement