Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- c:\projects\console\main.cpp -----------------------------------------------
- 1: #include <windows.h>
- 2: #include <iostream>
- 3: #include <time.h>
- 4:
- 5: typedef double_t Double;
- 6: typedef long long Real;
- 7:
- 8: int main()
- 9: {
- 00EB12A0 55 push ebp
- 00EB12A1 8B EC mov ebp,esp
- 00EB12A3 83 E4 C0 and esp,0FFFFFFC0h
- 00EB12A6 83 EC 34 sub esp,34h
- 00EB12A9 A1 00 40 EB 00 mov eax,dword ptr ds:[00EB4000h]
- 00EB12AE 33 C4 xor eax,esp
- 00EB12B0 89 44 24 30 mov dword ptr [esp+30h],eax
- 10: LARGE_INTEGER li;
- 11: Double frequency, time;
- 12: Real x;
- 13: //--//
- 14: const long long iterCount = pow(2, 29);
- 00EB12B4 C5 FB 10 05 68 32 EB 00 vmovsd xmm0,qword ptr ds:[0EB3268h]
- 00EB12BC C5 FB 10 0D 70 32 EB 00 vmovsd xmm1,qword ptr ds:[0EB3270h]
- 1: #include <windows.h>
- 2: #include <iostream>
- 3: #include <time.h>
- 4:
- 5: typedef double_t Double;
- 6: typedef long long Real;
- 7:
- 8: int main()
- 9: {
- 00EB12C4 53 push ebx
- 00EB12C5 56 push esi
- 00EB12C6 57 push edi
- 10: LARGE_INTEGER li;
- 11: Double frequency, time;
- 12: Real x;
- 13: //--//
- 14: const long long iterCount = pow(2, 29);
- 00EB12C7 E8 50 17 00 00 call __libm_sse2_pow_precise (0EB2A1Ch)
- 00EB12CC E8 7C 15 00 00 call _dtol3 (0EB284Dh)
- 00EB12D1 8B F0 mov esi,eax
- 00EB12D3 8B FA mov edi,edx
- 15: //std::cout << "size " << sizeof(Real) << " types" << std::endl << std::endl;
- 16:
- 17: // Get the high-resolution timer frequency and set to milliseconds
- 18: QueryPerformanceFrequency(&li);
- 00EB12D5 8D 44 24 30 lea eax,[esp+30h]
- 00EB12D9 50 push eax
- 00EB12DA FF 15 04 30 EB 00 call dword ptr ds:[0EB3004h]
- 19: frequency = (double)li.QuadPart / 1000.0;
- 00EB12E0 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00EB12E4 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00EB12E8 E8 00 17 00 00 call _ltod3 (0EB29EDh)
- 00EB12ED C5 FB 5E 05 78 32 EB 00 vdivsd xmm0,xmm0,mmword ptr ds:[0EB3278h]
- 00EB12F5 C5 FB 11 44 24 28 vmovsd qword ptr [esp+28h],xmm0
- 20:
- 21: // --
- 22: // ALWAYS TRUE TEST
- 23: // --
- 24:
- 25: x = 0;
- 26: // Get the current time
- 27: QueryPerformanceCounter(&li);
- 00EB12FB 8D 44 24 30 lea eax,[esp+30h]
- 00EB12FF C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 00EB1303 50 push eax
- 00EB1304 C5 F9 13 44 24 14 vmovlpd qword ptr [esp+14h],xmm0
- 00EB130A FF 15 00 30 EB 00 call dword ptr ds:[0EB3000h]
- 28: time = li.QuadPart;
- 00EB1310 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00EB1314 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00EB1318 E8 D0 16 00 00 call _ltod3 (0EB29EDh)
- 29:
- 30: std::cout << time << std::endl;
- 00EB131D 8B 0D 54 30 EB 00 mov ecx,dword ptr ds:[0EB3054h]
- 00EB1323 68 A0 1A EB 00 push 0EB1AA0h
- 00EB1328 83 EC 08 sub esp,8
- 29:
- 30: std::cout << time << std::endl;
- 00EB132B C5 FB 11 44 24 2C vmovsd qword ptr [esp+2Ch],xmm0
- 00EB1331 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00EB1336 FF 15 40 30 EB 00 call dword ptr ds:[0EB3040h]
- 00EB133C 8B C8 mov ecx,eax
- 00EB133E FF 15 48 30 EB 00 call dword ptr ds:[0EB3048h]
- 00EB1344 C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 31: for(long long i = 0; i<iterCount; ++i)
- 00EB1348 C5 F9 13 44 24 18 vmovlpd qword ptr [esp+18h],xmm0
- 00EB134E 85 FF test edi,edi
- 00EB1350 7C 44 jl main+0F6h (0EB1396h)
- 00EB1352 7F 04 jg main+0B8h (0EB1358h)
- 00EB1354 85 F6 test esi,esi
- 00EB1356 74 3E je main+0F6h (0EB1396h)
- 00EB1358 8B 54 24 10 mov edx,dword ptr [esp+10h]
- 00EB135C 8B 5C 24 14 mov ebx,dword ptr [esp+14h]
- 00EB1360 8B 4C 24 1C mov ecx,dword ptr [esp+1Ch]
- 00EB1364 8B 44 24 18 mov eax,dword ptr [esp+18h]
- 00EB1368 89 54 24 0C mov dword ptr [esp+0Ch],edx
- 00EB136C 8D 64 24 00 lea esp,[esp]
- 32: {
- 33: if(i > 0)
- 00EB1370 85 C9 test ecx,ecx
- 00EB1372 7C 10 jl main+0E4h (0EB1384h)
- 00EB1374 7F 04 jg main+0DAh (0EB137Ah)
- 00EB1376 85 C0 test eax,eax
- 00EB1378 74 0A je main+0E4h (0EB1384h)
- 34: {
- 35: ++x;
- 00EB137A 83 C2 01 add edx,1
- 00EB137D 89 54 24 0C mov dword ptr [esp+0Ch],edx
- 00EB1381 83 D3 00 adc ebx,0
- 31: for(long long i = 0; i<iterCount; ++i)
- 00EB1384 83 C0 01 add eax,1
- 00EB1387 83 D1 00 adc ecx,0
- 00EB138A 3B CF cmp ecx,edi
- 00EB138C 7C E2 jl main+0D0h (0EB1370h)
- 00EB138E 7F 12 jg main+102h (0EB13A2h)
- 00EB1390 3B C6 cmp eax,esi
- 00EB1392 72 DC jb main+0D0h (0EB1370h)
- 00EB1394 EB 0C jmp main+102h (0EB13A2h)
- 00EB1396 8B 44 24 10 mov eax,dword ptr [esp+10h]
- 00EB139A 8B 5C 24 14 mov ebx,dword ptr [esp+14h]
- 00EB139E 89 44 24 0C mov dword ptr [esp+0Ch],eax
- 36: }
- 37: }
- 38:
- 39: // Get the elapsed time and output it
- 40: QueryPerformanceCounter(&li);
- 00EB13A2 8D 44 24 30 lea eax,[esp+30h]
- 00EB13A6 50 push eax
- 00EB13A7 FF 15 00 30 EB 00 call dword ptr ds:[0EB3000h]
- 41: time = li.QuadPart - time;
- 00EB13AD 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00EB13B1 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00EB13B5 E8 33 16 00 00 call _ltod3 (0EB29EDh)
- 00EB13BA C5 FB 5C 44 24 20 vsubsd xmm0,xmm0,mmword ptr [esp+20h]
- 42: time /= frequency;
- 00EB13C0 C5 FB 5E 44 24 28 vdivsd xmm0,xmm0,mmword ptr [esp+28h]
- 43: std::cout << time << " : " << x << std::endl;
- 00EB13C6 8B 0D 54 30 EB 00 mov ecx,dword ptr ds:[0EB3054h]
- 00EB13CC 68 A0 1A EB 00 push 0EB1AA0h
- 00EB13D1 53 push ebx
- 00EB13D2 FF 74 24 14 push dword ptr [esp+14h]
- 00EB13D6 83 EC 0C sub esp,0Ch
- 00EB13D9 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00EB13DE FF 15 40 30 EB 00 call dword ptr ds:[0EB3040h]
- 00EB13E4 8B C8 mov ecx,eax
- 00EB13E6 E8 E5 06 00 00 call std::operator<<<std::char_traits<char> > (0EB1AD0h)
- 00EB13EB 83 C4 04 add esp,4
- 00EB13EE 8B C8 mov ecx,eax
- 00EB13F0 FF 15 44 30 EB 00 call dword ptr ds:[0EB3044h]
- 00EB13F6 8B C8 mov ecx,eax
- 00EB13F8 FF 15 48 30 EB 00 call dword ptr ds:[0EB3048h]
- 44:
- 45: // --
- 46: // ALWAYS FALSE TEST
- 47: // --
- 48:
- 49: x = 0;
- 50: // Get the current time
- 51: QueryPerformanceCounter(&li);
- 00EB13FE 8D 44 24 30 lea eax,[esp+30h]
- 00EB1402 C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 00EB1406 50 push eax
- 00EB1407 C5 F9 13 44 24 14 vmovlpd qword ptr [esp+14h],xmm0
- 00EB140D FF 15 00 30 EB 00 call dword ptr ds:[0EB3000h]
- 52: time = li.QuadPart;
- 00EB1413 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 52: time = li.QuadPart;
- 00EB1417 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00EB141B E8 CD 15 00 00 call _ltod3 (0EB29EDh)
- 53:
- 54: std::cout << time << std::endl;
- 00EB1420 8B 0D 54 30 EB 00 mov ecx,dword ptr ds:[0EB3054h]
- 00EB1426 68 A0 1A EB 00 push 0EB1AA0h
- 00EB142B 83 EC 08 sub esp,8
- 00EB142E C5 FB 11 44 24 2C vmovsd qword ptr [esp+2Ch],xmm0
- 00EB1434 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00EB1439 FF 15 40 30 EB 00 call dword ptr ds:[0EB3040h]
- 00EB143F 8B C8 mov ecx,eax
- 00EB1441 FF 15 48 30 EB 00 call dword ptr ds:[0EB3048h]
- 00EB1447 C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 55: for(long long i = 0; i<iterCount; ++i)
- 00EB144B C5 F9 13 44 24 18 vmovlpd qword ptr [esp+18h],xmm0
- 00EB1451 85 FF test edi,edi
- 00EB1453 7C 41 jl main+1F6h (0EB1496h)
- 00EB1455 7F 04 jg main+1BBh (0EB145Bh)
- 00EB1457 85 F6 test esi,esi
- 00EB1459 74 3B je main+1F6h (0EB1496h)
- 00EB145B 8B 54 24 10 mov edx,dword ptr [esp+10h]
- 00EB145F 8B 5C 24 14 mov ebx,dword ptr [esp+14h]
- 00EB1463 8B 4C 24 1C mov ecx,dword ptr [esp+1Ch]
- 00EB1467 8B 44 24 18 mov eax,dword ptr [esp+18h]
- 00EB146B 89 54 24 0C mov dword ptr [esp+0Ch],edx
- 00EB146F 90 nop
- 56: {
- 57: if(i < 0)
- 00EB1470 85 C9 test ecx,ecx
- 00EB1472 7F 10 jg main+1E4h (0EB1484h)
- 00EB1474 7C 04 jl main+1DAh (0EB147Ah)
- 00EB1476 85 C0 test eax,eax
- 00EB1478 73 0A jae main+1E4h (0EB1484h)
- 58: {
- 59: ++x;
- 00EB147A 83 C2 01 add edx,1
- 00EB147D 89 54 24 0C mov dword ptr [esp+0Ch],edx
- 00EB1481 83 D3 00 adc ebx,0
- 55: for(long long i = 0; i<iterCount; ++i)
- 00EB1484 83 C0 01 add eax,1
- 55: for(long long i = 0; i<iterCount; ++i)
- 00EB1487 83 D1 00 adc ecx,0
- 00EB148A 3B CF cmp ecx,edi
- 00EB148C 7C E2 jl main+1D0h (0EB1470h)
- 00EB148E 7F 12 jg main+202h (0EB14A2h)
- 00EB1490 3B C6 cmp eax,esi
- 00EB1492 72 DC jb main+1D0h (0EB1470h)
- 00EB1494 EB 0C jmp main+202h (0EB14A2h)
- 00EB1496 8B 44 24 10 mov eax,dword ptr [esp+10h]
- 00EB149A 8B 5C 24 14 mov ebx,dword ptr [esp+14h]
- 00EB149E 89 44 24 0C mov dword ptr [esp+0Ch],eax
- 60: }
- 61: }
- 62:
- 63: // Get the elapsed time and output it
- 64: QueryPerformanceCounter(&li);
- 00EB14A2 8D 44 24 30 lea eax,[esp+30h]
- 00EB14A6 50 push eax
- 00EB14A7 FF 15 00 30 EB 00 call dword ptr ds:[0EB3000h]
- 65: time = li.QuadPart - time;
- 00EB14AD 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00EB14B1 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00EB14B5 E8 33 15 00 00 call _ltod3 (0EB29EDh)
- 00EB14BA C5 FB 5C 44 24 20 vsubsd xmm0,xmm0,mmword ptr [esp+20h]
- 66: time /= frequency;
- 00EB14C0 C5 FB 5E 44 24 28 vdivsd xmm0,xmm0,mmword ptr [esp+28h]
- 67: std::cout << time << " : " << x << std::endl;
- 00EB14C6 8B 0D 54 30 EB 00 mov ecx,dword ptr ds:[0EB3054h]
- 00EB14CC 68 A0 1A EB 00 push 0EB1AA0h
- 00EB14D1 53 push ebx
- 00EB14D2 FF 74 24 14 push dword ptr [esp+14h]
- 00EB14D6 83 EC 0C sub esp,0Ch
- 00EB14D9 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00EB14DE FF 15 40 30 EB 00 call dword ptr ds:[0EB3040h]
- 00EB14E4 8B C8 mov ecx,eax
- 00EB14E6 E8 E5 05 00 00 call std::operator<<<std::char_traits<char> > (0EB1AD0h)
- 00EB14EB 83 C4 04 add esp,4
- 00EB14EE 8B C8 mov ecx,eax
- 00EB14F0 FF 15 44 30 EB 00 call dword ptr ds:[0EB3044h]
- 00EB14F6 8B C8 mov ecx,eax
- 00EB14F8 FF 15 48 30 EB 00 call dword ptr ds:[0EB3048h]
- 68:
- 69: // --
- 70: // NO TEST
- 71: // --
- 72:
- 73: x = 0;
- 74: // Get the current time
- 75: QueryPerformanceCounter(&li);
- 00EB14FE 8D 44 24 30 lea eax,[esp+30h]
- 00EB1502 C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 00EB1506 50 push eax
- 00EB1507 C5 F9 13 44 24 14 vmovlpd qword ptr [esp+14h],xmm0
- 00EB150D FF 15 00 30 EB 00 call dword ptr ds:[0EB3000h]
- 76: time = li.QuadPart;
- 00EB1513 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00EB1517 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00EB151B E8 CD 14 00 00 call _ltod3 (0EB29EDh)
- 77:
- 78: std::cout << time << std::endl;
- 00EB1520 8B 0D 54 30 EB 00 mov ecx,dword ptr ds:[0EB3054h]
- 00EB1526 68 A0 1A EB 00 push 0EB1AA0h
- 00EB152B 83 EC 08 sub esp,8
- 00EB152E C5 FB 11 44 24 2C vmovsd qword ptr [esp+2Ch],xmm0
- 00EB1534 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00EB1539 FF 15 40 30 EB 00 call dword ptr ds:[0EB3040h]
- 00EB153F 8B C8 mov ecx,eax
- 00EB1541 FF 15 48 30 EB 00 call dword ptr ds:[0EB3048h]
- 00EB1547 C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 79: for(long long i = 0; i<iterCount; ++i)
- 00EB154B C5 F9 13 44 24 18 vmovlpd qword ptr [esp+18h],xmm0
- 00EB1551 85 FF test edi,edi
- 00EB1553 0F 8C A5 00 00 00 jl main+35Eh (0EB15FEh)
- 00EB1559 7F 08 jg main+2C3h (0EB1563h)
- 00EB155B 85 F6 test esi,esi
- 00EB155D 0F 84 9B 00 00 00 je main+35Eh (0EB15FEh)
- 00EB1563 8B 5C 24 14 mov ebx,dword ptr [esp+14h]
- 00EB1567 8B 54 24 10 mov edx,dword ptr [esp+10h]
- 00EB156B 8B 4C 24 1C mov ecx,dword ptr [esp+1Ch]
- 00EB156F 8B 44 24 18 mov eax,dword ptr [esp+18h]
- 80: {
- 81: ++x;
- 00EB1573 83 C2 01 add edx,1
- 00EB1576 89 54 24 0C mov dword ptr [esp+0Ch],edx
- 00EB157A 83 D3 00 adc ebx,0
- 00EB157D 83 C0 01 add eax,1
- 00EB1580 83 D1 00 adc ecx,0
- 00EB1583 3B CF cmp ecx,edi
- 00EB1585 7C EC jl main+2D3h (0EB1573h)
- 79: for(long long i = 0; i<iterCount; ++i)
- 00EB1587 7F 04 jg main+2EDh (0EB158Dh)
- 00EB1589 3B C6 cmp eax,esi
- 00EB158B 72 E6 jb main+2D3h (0EB1573h)
- 00EB158D 8B 74 24 0C mov esi,dword ptr [esp+0Ch]
- 82: }
- 83:
- 84: // Get the elapsed time and output it
- 85: QueryPerformanceCounter(&li);
- 00EB1591 8D 44 24 30 lea eax,[esp+30h]
- 00EB1595 50 push eax
- 00EB1596 FF 15 00 30 EB 00 call dword ptr ds:[0EB3000h]
- 86: time = li.QuadPart - time;
- 00EB159C 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00EB15A0 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00EB15A4 E8 44 14 00 00 call _ltod3 (0EB29EDh)
- 00EB15A9 C5 FB 5C 44 24 20 vsubsd xmm0,xmm0,mmword ptr [esp+20h]
- 87: time /= frequency;
- 00EB15AF C5 FB 5E 44 24 28 vdivsd xmm0,xmm0,mmword ptr [esp+28h]
- 88: std::cout << time << " : " << x << std::endl;
- 00EB15B5 8B 0D 54 30 EB 00 mov ecx,dword ptr ds:[0EB3054h]
- 00EB15BB 68 A0 1A EB 00 push 0EB1AA0h
- 00EB15C0 53 push ebx
- 00EB15C1 56 push esi
- 00EB15C2 83 EC 0C sub esp,0Ch
- 00EB15C5 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00EB15CA FF 15 40 30 EB 00 call dword ptr ds:[0EB3040h]
- 00EB15D0 8B C8 mov ecx,eax
- 00EB15D2 E8 F9 04 00 00 call std::operator<<<std::char_traits<char> > (0EB1AD0h)
- 00EB15D7 83 C4 04 add esp,4
- 00EB15DA 8B C8 mov ecx,eax
- 00EB15DC FF 15 44 30 EB 00 call dword ptr ds:[0EB3044h]
- 00EB15E2 8B C8 mov ecx,eax
- 00EB15E4 FF 15 48 30 EB 00 call dword ptr ds:[0EB3048h]
- 89:
- 90: return 0;
- 91: }
- 00EB15EA 8B 4C 24 3C mov ecx,dword ptr [esp+3Ch]
- 00EB15EE 33 C0 xor eax,eax
- 00EB15F0 5F pop edi
- 00EB15F1 5E pop esi
- 00EB15F2 5B pop ebx
- 00EB15F3 33 CC xor ecx,esp
- 00EB15F5 E8 E8 06 00 00 call __security_check_cookie (0EB1CE2h)
- 00EB15FA 8B E5 mov esp,ebp
- 00EB15FC 5D pop ebp
- 00EB15FD C3 ret
- 79: for(long long i = 0; i<iterCount; ++i)
- 00EB15FE 8B 5C 24 14 mov ebx,dword ptr [esp+14h]
- 00EB1602 8B 74 24 10 mov esi,dword ptr [esp+10h]
- 00EB1606 EB 89 jmp main+2F1h (0EB1591h)
Advertisement
Add Comment
Please, Sign In to add comment