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 Real;
- 7:
- 8: int main()
- 9: {
- 00E312A0 55 push ebp
- 00E312A1 8B EC mov ebp,esp
- 00E312A3 83 E4 C0 and esp,0FFFFFFC0h
- 00E312A6 83 EC 34 sub esp,34h
- 00E312A9 A1 00 40 E3 00 mov eax,dword ptr ds:[00E34000h]
- 00E312AE 33 C4 xor eax,esp
- 00E312B0 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);
- 00E312B4 C5 FB 10 05 68 32 E3 00 vmovsd xmm0,qword ptr ds:[0E33268h]
- 00E312BC C5 FB 10 0D 70 32 E3 00 vmovsd xmm1,qword ptr ds:[0E33270h]
- 1: #include <windows.h>
- 2: #include <iostream>
- 3: #include <time.h>
- 4:
- 5: typedef double_t Double;
- 6: typedef long Real;
- 7:
- 8: int main()
- 9: {
- 00E312C4 53 push ebx
- 00E312C5 56 push esi
- 00E312C6 57 push edi
- 10: LARGE_INTEGER li;
- 11: Double frequency, time;
- 12: Real x;
- 13: //--//
- 14: const long long iterCount = pow(2, 29);
- 00E312C7 E8 B0 16 00 00 call __libm_sse2_pow_precise (0E3297Ch)
- 00E312CC E8 DC 14 00 00 call _dtol3 (0E327ADh)
- 00E312D1 8B F0 mov esi,eax
- 00E312D3 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);
- 00E312D5 8D 44 24 30 lea eax,[esp+30h]
- 00E312D9 50 push eax
- 00E312DA FF 15 04 30 E3 00 call dword ptr ds:[0E33004h]
- 19: frequency = (double)li.QuadPart / 1000.0;
- 00E312E0 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00E312E4 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00E312E8 E8 60 16 00 00 call _ltod3 (0E3294Dh)
- 00E312ED C5 FB 5E 05 78 32 E3 00 vdivsd xmm0,xmm0,mmword ptr ds:[0E33278h]
- 20:
- 21: // --
- 22: // ALWAYS TRUE TEST
- 23: // --
- 24:
- 25: x = 0;
- 26: // Get the current time
- 27: QueryPerformanceCounter(&li);
- 00E312F5 8D 44 24 30 lea eax,[esp+30h]
- 00E312F9 33 DB xor ebx,ebx
- 00E312FB 50 push eax
- 00E312FC C5 FB 11 44 24 2C vmovsd qword ptr [esp+2Ch],xmm0
- 00E31302 FF 15 00 30 E3 00 call dword ptr ds:[0E33000h]
- 28: time = li.QuadPart;
- 00E31308 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00E3130C 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00E31310 E8 38 16 00 00 call _ltod3 (0E3294Dh)
- 29:
- 30: std::cout << time << std::endl;
- 00E31315 8B 0D 54 30 E3 00 mov ecx,dword ptr ds:[0E33054h]
- 00E3131B 68 00 1A E3 00 push 0E31A00h
- 00E31320 83 EC 08 sub esp,8
- 00E31323 C5 FB 11 44 24 2C vmovsd qword ptr [esp+2Ch],xmm0
- 29:
- 30: std::cout << time << std::endl;
- 00E31329 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00E3132E FF 15 40 30 E3 00 call dword ptr ds:[0E33040h]
- 00E31334 8B C8 mov ecx,eax
- 00E31336 FF 15 48 30 E3 00 call dword ptr ds:[0E33048h]
- 00E3133C C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 31: for(long long i = 0; i<iterCount; ++i)
- 00E31340 C5 F9 13 44 24 18 vmovlpd qword ptr [esp+18h],xmm0
- 00E31346 85 FF test edi,edi
- 00E31348 7C 29 jl main+0D3h (0E31373h)
- 00E3134A 7F 04 jg main+0B0h (0E31350h)
- 00E3134C 85 F6 test esi,esi
- 00E3134E 74 23 je main+0D3h (0E31373h)
- 00E31350 8B 4C 24 1C mov ecx,dword ptr [esp+1Ch]
- 00E31354 8B 44 24 18 mov eax,dword ptr [esp+18h]
- 32: {
- 33: if(i > 0)
- 00E31358 85 C9 test ecx,ecx
- 00E3135A 7C 07 jl main+0C3h (0E31363h)
- 00E3135C 7F 04 jg main+0C2h (0E31362h)
- 00E3135E 85 C0 test eax,eax
- 00E31360 74 01 je main+0C3h (0E31363h)
- 34: {
- 35: ++x;
- 00E31362 43 inc ebx
- 31: for(long long i = 0; i<iterCount; ++i)
- 00E31363 83 C0 01 add eax,1
- 00E31366 83 D1 00 adc ecx,0
- 00E31369 3B CF cmp ecx,edi
- 00E3136B 7C EB jl main+0B8h (0E31358h)
- 00E3136D 7F 04 jg main+0D3h (0E31373h)
- 00E3136F 3B C6 cmp eax,esi
- 00E31371 72 E5 jb main+0B8h (0E31358h)
- 36: }
- 37: }
- 38:
- 39: // Get the elapsed time and output it
- 40: QueryPerformanceCounter(&li);
- 00E31373 8D 44 24 30 lea eax,[esp+30h]
- 00E31377 50 push eax
- 00E31378 FF 15 00 30 E3 00 call dword ptr ds:[0E33000h]
- 41: time = li.QuadPart - time;
- 00E3137E 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00E31382 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00E31386 E8 C2 15 00 00 call _ltod3 (0E3294Dh)
- 00E3138B C5 FB 5C 44 24 20 vsubsd xmm0,xmm0,mmword ptr [esp+20h]
- 42: time /= frequency;
- 00E31391 C5 FB 5E 44 24 28 vdivsd xmm0,xmm0,mmword ptr [esp+28h]
- 43: std::cout << time << " : " << x << std::endl;
- 00E31397 8B 0D 54 30 E3 00 mov ecx,dword ptr ds:[0E33054h]
- 00E3139D 68 00 1A E3 00 push 0E31A00h
- 00E313A2 53 push ebx
- 00E313A3 83 EC 08 sub esp,8
- 00E313A6 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00E313AB FF 15 40 30 E3 00 call dword ptr ds:[0E33040h]
- 00E313B1 8B C8 mov ecx,eax
- 00E313B3 E8 78 06 00 00 call std::operator<<<std::char_traits<char> > (0E31A30h)
- 00E313B8 8B C8 mov ecx,eax
- 00E313BA FF 15 44 30 E3 00 call dword ptr ds:[0E33044h]
- 00E313C0 8B C8 mov ecx,eax
- 00E313C2 FF 15 48 30 E3 00 call dword ptr ds:[0E33048h]
- 44:
- 45: // --
- 46: // ALWAYS FALSE TEST
- 47: // --
- 48:
- 49: x = 0;
- 50: // Get the current time
- 51: QueryPerformanceCounter(&li);
- 00E313C8 8D 44 24 30 lea eax,[esp+30h]
- 00E313CC 33 DB xor ebx,ebx
- 00E313CE 50 push eax
- 00E313CF FF 15 00 30 E3 00 call dword ptr ds:[0E33000h]
- 52: time = li.QuadPart;
- 00E313D5 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00E313D9 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00E313DD E8 6B 15 00 00 call _ltod3 (0E3294Dh)
- 53:
- 54: std::cout << time << std::endl;
- 00E313E2 8B 0D 54 30 E3 00 mov ecx,dword ptr ds:[0E33054h]
- 00E313E8 68 00 1A E3 00 push 0E31A00h
- 00E313ED 83 EC 08 sub esp,8
- 00E313F0 C5 FB 11 44 24 2C vmovsd qword ptr [esp+2Ch],xmm0
- 00E313F6 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00E313FB FF 15 40 30 E3 00 call dword ptr ds:[0E33040h]
- 00E31401 8B C8 mov ecx,eax
- 00E31403 FF 15 48 30 E3 00 call dword ptr ds:[0E33048h]
- 00E31409 C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 55: for(long long i = 0; i<iterCount; ++i)
- 00E3140D C5 F9 13 44 24 18 vmovlpd qword ptr [esp+18h],xmm0
- 00E31413 85 FF test edi,edi
- 00E31415 7C 29 jl main+1A0h (0E31440h)
- 00E31417 7F 04 jg main+17Dh (0E3141Dh)
- 00E31419 85 F6 test esi,esi
- 00E3141B 74 23 je main+1A0h (0E31440h)
- 00E3141D 8B 4C 24 1C mov ecx,dword ptr [esp+1Ch]
- 00E31421 8B 44 24 18 mov eax,dword ptr [esp+18h]
- 56: {
- 57: if(i < 0)
- 00E31425 85 C9 test ecx,ecx
- 00E31427 7F 07 jg main+190h (0E31430h)
- 00E31429 7C 04 jl main+18Fh (0E3142Fh)
- 00E3142B 85 C0 test eax,eax
- 00E3142D 73 01 jae main+190h (0E31430h)
- 58: {
- 59: ++x;
- 00E3142F 43 inc ebx
- 55: for(long long i = 0; i<iterCount; ++i)
- 00E31430 83 C0 01 add eax,1
- 00E31433 83 D1 00 adc ecx,0
- 00E31436 3B CF cmp ecx,edi
- 00E31438 7C EB jl main+185h (0E31425h)
- 00E3143A 7F 04 jg main+1A0h (0E31440h)
- 00E3143C 3B C6 cmp eax,esi
- 00E3143E 72 E5 jb main+185h (0E31425h)
- 60: }
- 61: }
- 62:
- 63: // Get the elapsed time and output it
- 64: QueryPerformanceCounter(&li);
- 00E31440 8D 44 24 30 lea eax,[esp+30h]
- 00E31444 50 push eax
- 00E31445 FF 15 00 30 E3 00 call dword ptr ds:[0E33000h]
- 65: time = li.QuadPart - time;
- 00E3144B 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00E3144F 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00E31453 E8 F5 14 00 00 call _ltod3 (0E3294Dh)
- 00E31458 C5 FB 5C 44 24 20 vsubsd xmm0,xmm0,mmword ptr [esp+20h]
- 66: time /= frequency;
- 00E3145E C5 FB 5E 44 24 28 vdivsd xmm0,xmm0,mmword ptr [esp+28h]
- 67: std::cout << time << " : " << x << std::endl;
- 00E31464 8B 0D 54 30 E3 00 mov ecx,dword ptr ds:[0E33054h]
- 00E3146A 68 00 1A E3 00 push 0E31A00h
- 00E3146F 53 push ebx
- 00E31470 83 EC 08 sub esp,8
- 00E31473 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00E31478 FF 15 40 30 E3 00 call dword ptr ds:[0E33040h]
- 00E3147E 8B C8 mov ecx,eax
- 00E31480 E8 AB 05 00 00 call std::operator<<<std::char_traits<char> > (0E31A30h)
- 00E31485 8B C8 mov ecx,eax
- 00E31487 FF 15 44 30 E3 00 call dword ptr ds:[0E33044h]
- 00E3148D 8B C8 mov ecx,eax
- 00E3148F FF 15 48 30 E3 00 call dword ptr ds:[0E33048h]
- 68:
- 69: // --
- 70: // NO TEST
- 71: // --
- 72:
- 73: x = 0;
- 74: // Get the current time
- 75: QueryPerformanceCounter(&li);
- 00E31495 8D 44 24 30 lea eax,[esp+30h]
- 00E31499 33 DB xor ebx,ebx
- 00E3149B 50 push eax
- 00E3149C FF 15 00 30 E3 00 call dword ptr ds:[0E33000h]
- 76: time = li.QuadPart;
- 00E314A2 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00E314A6 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00E314AA E8 9E 14 00 00 call _ltod3 (0E3294Dh)
- 77:
- 78: std::cout << time << std::endl;
- 00E314AF 8B 0D 54 30 E3 00 mov ecx,dword ptr ds:[0E33054h]
- 00E314B5 68 00 1A E3 00 push 0E31A00h
- 00E314BA 83 EC 08 sub esp,8
- 00E314BD C5 FB 11 44 24 2C vmovsd qword ptr [esp+2Ch],xmm0
- 00E314C3 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00E314C8 FF 15 40 30 E3 00 call dword ptr ds:[0E33040h]
- 00E314CE 8B C8 mov ecx,eax
- 00E314D0 FF 15 48 30 E3 00 call dword ptr ds:[0E33048h]
- 00E314D6 C5 F8 57 C0 vxorps xmm0,xmm0,xmm0
- 79: for(long long i = 0; i<iterCount; ++i)
- 00E314DA C5 F9 13 44 24 18 vmovlpd qword ptr [esp+18h],xmm0
- 00E314E0 85 FF test edi,edi
- 00E314E2 7C 1F jl main+263h (0E31503h)
- 00E314E4 7F 04 jg main+24Ah (0E314EAh)
- 00E314E6 85 F6 test esi,esi
- 00E314E8 74 19 je main+263h (0E31503h)
- 00E314EA 8B 4C 24 1C mov ecx,dword ptr [esp+1Ch]
- 00E314EE 8B 44 24 18 mov eax,dword ptr [esp+18h]
- 80: {
- 81: ++x;
- 00E314F2 43 inc ebx
- 00E314F3 83 C0 01 add eax,1
- 00E314F6 83 D1 00 adc ecx,0
- 00E314F9 3B CF cmp ecx,edi
- 00E314FB 7C F5 jl main+252h (0E314F2h)
- 79: for(long long i = 0; i<iterCount; ++i)
- 00E314FD 7F 04 jg main+263h (0E31503h)
- 00E314FF 3B C6 cmp eax,esi
- 00E31501 72 EF jb main+252h (0E314F2h)
- 82: }
- 83:
- 84: // Get the elapsed time and output it
- 85: QueryPerformanceCounter(&li);
- 00E31503 8D 44 24 30 lea eax,[esp+30h]
- 00E31507 50 push eax
- 00E31508 FF 15 00 30 E3 00 call dword ptr ds:[0E33000h]
- 86: time = li.QuadPart - time;
- 00E3150E 8B 54 24 34 mov edx,dword ptr [esp+34h]
- 00E31512 8B 4C 24 30 mov ecx,dword ptr [esp+30h]
- 00E31516 E8 32 14 00 00 call _ltod3 (0E3294Dh)
- 00E3151B C5 FB 5C 44 24 20 vsubsd xmm0,xmm0,mmword ptr [esp+20h]
- 87: time /= frequency;
- 00E31521 C5 FB 5E 44 24 28 vdivsd xmm0,xmm0,mmword ptr [esp+28h]
- 88: std::cout << time << " : " << x << std::endl;
- 00E31527 8B 0D 54 30 E3 00 mov ecx,dword ptr ds:[0E33054h]
- 00E3152D 68 00 1A E3 00 push 0E31A00h
- 00E31532 53 push ebx
- 00E31533 83 EC 08 sub esp,8
- 00E31536 C5 FB 11 04 24 vmovsd qword ptr [esp],xmm0
- 00E3153B FF 15 40 30 E3 00 call dword ptr ds:[0E33040h]
- 00E31541 8B C8 mov ecx,eax
- 00E31543 E8 E8 04 00 00 call std::operator<<<std::char_traits<char> > (0E31A30h)
- 00E31548 8B C8 mov ecx,eax
- 00E3154A FF 15 44 30 E3 00 call dword ptr ds:[0E33044h]
- 00E31550 8B C8 mov ecx,eax
- 00E31552 FF 15 48 30 E3 00 call dword ptr ds:[0E33048h]
- 89:
- 90: return 0;
- 91: }
- 00E31558 8B 4C 24 3C mov ecx,dword ptr [esp+3Ch]
- 00E3155C 33 C0 xor eax,eax
- 00E3155E 5F pop edi
- 00E3155F 5E pop esi
- 00E31560 5B pop ebx
- 00E31561 33 CC xor ecx,esp
- 00E31563 E8 DA 06 00 00 call __security_check_cookie (0E31C42h)
- 00E31568 8B E5 mov esp,ebp
- 00E3156A 5D pop ebp
- 00E3156B C3 ret
Advertisement
Add Comment
Please, Sign In to add comment