rendered paste bodyVS2k3
--- e:\vcprogs\valami\valami.cpp -----------------------------------------------
// Valami.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
//using namespace std;
#define SIZE 100000
#define REPEAT 1000
#define TOTAL_REP 10
#define TYPE short
#define TEST(x,y) s = clock(); for(int j = 0; j < REPEAT; j++) for(int i = 0; i < SIZE; i++) x[i] = x[0]+x[SIZE-1]+x[i/2]; e[y] += clock() - s;
TYPE *a;
TYPE b[SIZE+1];
void main (void)
{
00401000 push ebp
00401001 mov ebp,esp
00401003 and esp,0FFFFFFF8h
00401006 mov eax,30D6Ch
0040100B call _chkstk (401500h)
00401010 mov eax,dword ptr [___security_cookie (40B084h)]
00401015 push ebx
00401016 push esi
00401017 push edi
TYPE *c = new TYPE[SIZE+1];
00401018 push 30D42h
0040101D mov dword ptr [esp+30D78h],eax
00401024 call operator new[] (4012EDh)
00401029 mov esi,eax
TYPE d[SIZE+1] = {};
0040102B xor eax,eax
0040102D mov ecx,0C350h
00401032 lea edi,[esp+2Ch]
00401036 rep stos dword ptr [edi]
a = new TYPE[SIZE+1];
00401038 push 30D42h
0040103D stos word ptr [edi]
0040103F call operator new[] (4012EDh)
00401044 add esp,8
00401047 mov dword ptr [a (43C784h)],eax
clock_t s,e[4] = {0,0,0,0};
0040104C xor eax,eax
0040104E mov dword ptr [esp+10h],eax
00401052 mov dword ptr [esp+14h],eax
00401056 mov dword ptr [esp+18h],eax
0040105A mov dword ptr [esp+1Ch],eax
0040105E mov dword ptr [esp+20h],0Ah
for(int k = 0; k < TOTAL_REP; k++)
{
TEST(a,0);
00401066 call clock (4013E7h)
0040106B mov dword ptr [esp+24h],eax
0040106F mov dword ptr [esp+0Ch],3E8h
00401077 jmp main+80h (401080h)
00401079 lea esp,[esp]
00401080 mov ecx,2
00401085 mov eax,6
0040108A mov edi,4E20h
0040108F nop
00401090 mov edx,dword ptr [a (43C784h)]
00401096 lea ebx,[ecx-2]
00401099 shr ebx,1
0040109B mov bx,word ptr [edx+ebx*2]
0040109F add bx,word ptr [edx+30D3Eh]
004010A6 add eax,0Ah
004010A9 add bx,word ptr [edx]
004010AC mov word ptr [eax+edx-10h],bx
004010B1 mov edx,dword ptr [a (43C784h)]
004010B7 lea ebx,[ecx-1]
004010BA shr ebx,1
004010BC mov bx,word ptr [edx+ebx*2]
004010C0 add bx,word ptr [edx+30D3Eh]
004010C7 add bx,word ptr [edx]
004010CA mov word ptr [eax+edx-0Eh],bx
004010CF mov edx,dword ptr [a (43C784h)]
004010D5 mov ebx,ecx
004010D7 shr ebx,1
004010D9 mov bx,word ptr [edx+ebx*2]
004010DD add bx,word ptr [edx+30D3Eh]
004010E4 add bx,word ptr [edx]
004010E7 mov word ptr [eax+edx-0Ch],bx
004010EC mov edx,dword ptr [a (43C784h)]
004010F2 lea ebx,[ecx+1]
004010F5 shr ebx,1
004010F7 mov bx,word ptr [edx+ebx*2]
004010FB add bx,word ptr [edx+30D3Eh]
00401102 add bx,word ptr [edx]
00401105 mov word ptr [eax+edx-0Ah],bx
0040110A mov edx,dword ptr [a (43C784h)]
00401110 lea ebx,[ecx+2]
00401113 shr ebx,1
00401115 mov bx,word ptr [edx+ebx*2]
00401119 add bx,word ptr [edx+30D3Eh]
00401120 add ecx,5
00401123 add bx,word ptr [edx]
00401126 dec edi
00401127 mov word ptr [eax+edx-8],bx
0040112C jne main+90h (401090h)
00401132 dec dword ptr [esp+0Ch]
00401136 jne main+80h (401080h)
0040113C call clock (4013E7h)
00401141 mov edx,dword ptr [esp+24h]
00401145 mov ecx,dword ptr [esp+10h]
00401149 sub eax,edx
0040114B add ecx,eax
0040114D mov dword ptr [esp+10h],ecx
TEST(b,1);
00401151 call clock (4013E7h)
00401156 mov edi,eax
00401158 mov ecx,3E8h
0040115D lea ecx,[ecx]
00401160 xor eax,eax
00401162 mov ebx,dword ptr [b (40BA40h)]
00401168 mov edx,eax
0040116A shr edx,1
0040116C movsx edx,word ptr [edx*2+40BA40h]
00401174 add dx,word ptr ds:[43C77Eh]
0040117B add edx,ebx
0040117D mov word ptr [eax*2+40BA40h],dx
00401185 inc eax
00401186 cmp eax,186A0h
0040118B jl main+162h (401162h)
0040118D dec ecx
0040118E jne main+160h (401160h)
00401190 call clock (4013E7h)
00401195 mov ecx,dword ptr [esp+14h]
00401199 sub eax,edi
0040119B add ecx,eax
0040119D mov dword ptr [esp+14h],ecx
TEST(c,2);
004011A1 call clock (4013E7h)
004011A6 mov edi,eax
004011A8 mov dword ptr [esp+0Ch],3E8h
004011B0 mov ecx,2
004011B5 lea eax,[esi+4]
004011B8 mov edx,4E20h
004011BD lea ecx,[ecx]
004011C0 lea ebx,[ecx-2]
004011C3 shr ebx,1
004011C5 mov bx,word ptr [esi+ebx*2]
004011C9 add bx,word ptr [esi]
004011CC add eax,0Ah
004011CF add bx,word ptr [esi+30D3Eh]
004011D6 mov word ptr [eax-0Eh],bx
004011DA lea ebx,[ecx-1]
004011DD shr ebx,1
004011DF mov bx,word ptr [esi+ebx*2]
004011E3 add bx,word ptr [esi]
004011E6 add bx,word ptr [esi+30D3Eh]
004011ED mov word ptr [eax-0Ch],bx
004011F1 mov ebx,ecx
004011F3 shr ebx,1
004011F5 mov bx,word ptr [esi+ebx*2]
004011F9 add bx,word ptr [esi]
004011FC add bx,word ptr [esi+30D3Eh]
00401203 mov word ptr [eax-0Ah],bx
00401207 lea ebx,[ecx+1]
0040120A shr ebx,1
0040120C mov bx,word ptr [esi+ebx*2]
00401210 add bx,word ptr [esi]
00401213 add bx,word ptr [esi+30D3Eh]
0040121A mov word ptr [eax-8],bx
0040121E lea ebx,[ecx+2]
00401221 shr ebx,1
00401223 mov bx,word ptr [esi+ebx*2]
00401227 add bx,word ptr [esi]
0040122A add ecx,5
0040122D add bx,word ptr [esi+30D3Eh]
00401234 dec edx
00401235 mov word ptr [eax-6],bx
00401239 jne main+1C0h (4011C0h)
0040123B dec dword ptr [esp+0Ch]
0040123F jne main+1B0h (4011B0h)
00401245 call clock (4013E7h)
0040124A mov ecx,dword ptr [esp+18h]
0040124E sub eax,edi
00401250 add ecx,eax
00401252 mov dword ptr [esp+18h],ecx
TEST(d,3);
00401256 call clock (4013E7h)
0040125B mov edi,eax
0040125D mov ecx,3E8h
00401262 xor eax,eax
00401264 mov ebx,dword ptr [esp+28h]
00401268 mov edx,eax
0040126A shr edx,1
0040126C movsx edx,word ptr [esp+edx*2+28h]
00401271 add dx,word ptr [esp+30D66h]
00401279 add edx,ebx
0040127B mov word ptr [esp+eax*2+28h],dx
00401280 inc eax
00401281 cmp eax,186A0h
00401286 jl main+264h (401264h)
00401288 dec ecx
00401289 jne main+262h (401262h)
0040128B call clock (4013E7h)
00401290 mov ecx,dword ptr [esp+1Ch]
00401294 sub eax,edi
00401296 add ecx,eax
00401298 mov eax,dword ptr [esp+20h]
0040129C dec eax
0040129D mov dword ptr [esp+1Ch],ecx
004012A1 mov dword ptr [esp+20h],eax
004012A5 jne main+66h (401066h)
}
for(int i = 0; i < 4; i++)
004012AB xor esi,esi
004012AD lea ecx,[ecx]
printf("Time: %f\n", (float)(e[i]) / float(TOTAL_REP) / (float)CLK_TCK);
004012B0 fild dword ptr [esp+esi*4+10h]
004012B4 sub esp,8
004012B7 fmul dword ptr [__real@38d1b717 (409118h)]
004012BD fstp qword ptr [esp]
004012C0 push offset string "Time: %f\n" (40910Ch)
004012C5 call printf (4013B6h)
004012CA add esp,0Ch
004012CD inc esi
004012CE cmp esi,4
004012D1 jl main+2B0h (4012B0h)
getch();
004012D3 call _getch (408031h)
}
004012D8 mov ecx,dword ptr [esp+30D74h]
004012DF xor eax,eax
004012E1 call __security_check_cookie (4014E9h)
004012E6 pop edi
004012E7 pop esi
004012E8 pop ebx
004012E9 mov esp,ebp
004012EB pop ebp
004012EC ret
----------------------------------------------------------
VS2k8
--- e:\vcprogs\valami2\valami2\valami2.cpp -------------------------------------
00401002 in al,dx
00401003 and esp,0FFFFFFC0h
00401006 mov eax,30D74h
0040100B call _chkstk (401AC0h)
00401010 mov eax,dword ptr [___security_cookie (403000h)]
00401015 xor eax,esp
00401017 mov dword ptr [esp+30D70h],eax
0040101E push ebx
0040101F push esi
00401020 push edi
TYPE *c = new TYPE[SIZE+1];
00401021 push 30D42h
00401026 call operator new[] (4012C8h)
TYPE d[SIZE+1] = {};
0040102B push 30D42h
00401030 mov esi,eax
00401032 xor edi,edi
00401034 lea eax,[esp+38h]
00401038 push edi
00401039 push eax
0040103A call memset (401AECh)
a = new TYPE[SIZE+1];
0040103F push 30D42h
00401044 call operator new[] (4012C8h)
00401049 mov ebx,dword ptr [__imp__clock (40209Ch)]
0040104F add esp,14h
00401052 mov dword ptr [a (4340BCh)],eax
clock_t s,e[4] = {0,0,0,0};
00401057 mov dword ptr [esp+1Ch],edi
0040105B mov dword ptr [esp+20h],edi
0040105F mov dword ptr [esp+24h],edi
00401063 mov dword ptr [esp+28h],edi
00401067 mov dword ptr [esp+2Ch],64h
0040106F nop
for(int k = 0; k < TOTAL_REP; k++)
{
TEST(a,0);
00401070 call ebx
00401072 mov dword ptr [esp+18h],eax
00401076 mov eax,dword ptr [a (4340BCh)]
0040107B mov dword ptr [esp+14h],3E8h
00401083 mov edx,2
00401088 lea ecx,[eax+4]
0040108B mov edi,4E20h
00401090 lea ebx,[edx-2]
00401093 shr ebx,1
00401095 movzx ebx,word ptr [eax+ebx*2]
00401099 add bx,word ptr [eax+30D3Eh]
004010A0 add ecx,0Ah
004010A3 add bx,word ptr [eax]
004010A6 mov word ptr [ecx-0Eh],bx
004010AA lea ebx,[edx-1]
004010AD shr ebx,1
004010AF movzx ebx,word ptr [eax+ebx*2]
004010B3 add bx,word ptr [eax+30D3Eh]
004010BA add bx,word ptr [eax]
004010BD mov word ptr [ecx-0Ch],bx
004010C1 mov ebx,edx
004010C3 shr ebx,1
004010C5 movzx ebx,word ptr [eax+ebx*2]
004010C9 add bx,word ptr [eax+30D3Eh]
004010D0 add bx,word ptr [eax]
004010D3 mov word ptr [ecx-0Ah],bx
004010D7 lea ebx,[edx+1]
004010DA shr ebx,1
004010DC movzx ebx,word ptr [eax+ebx*2]
004010E0 add bx,word ptr [eax+30D3Eh]
004010E7 add bx,word ptr [eax]
004010EA mov word ptr [ecx-8],bx
004010EE lea ebx,[edx+2]
004010F1 shr ebx,1
004010F3 movzx ebx,word ptr [eax+ebx*2]
004010F7 add bx,word ptr [eax+30D3Eh]
004010FE add edx,5
00401101 add bx,word ptr [eax]
00401104 sub edi,1
00401107 mov word ptr [ecx-6],bx
0040110B jne main+90h (401090h)
0040110D sub dword ptr [esp+14h],1
00401112 jne main+83h (401083h)
00401118 mov ebx,dword ptr [__imp__clock (40209Ch)]
0040111E call ebx
00401120 sub eax,dword ptr [esp+18h]
00401124 add dword ptr [esp+1Ch],eax
TEST(b,1);
00401128 call ebx
0040112A mov edi,eax
0040112C mov ecx,3E8h
00401131 xor eax,eax
00401133 mov edx,eax
00401135 shr edx,1
00401137 mov dx,word ptr b (403378h)[edx*2]
0040113F add dx,word ptr ds:[4340B6h]
00401146 inc eax
00401147 add dx,word ptr [b (403378h)]
0040114E cmp eax,186A0h
00401153 mov word ptr __fmode+6 (403376h)[eax*2],dx
0040115B jl main+133h (401133h)
0040115D sub ecx,1
00401160 jne main+131h (401131h)
00401162 call ebx
00401164 sub eax,edi
00401166 add dword ptr [esp+20h],eax
TEST(c,2);
0040116A call ebx
0040116C mov dword ptr [esp+18h],eax
00401170 mov dword ptr [esp+14h],3E8h
00401178 jmp main+180h (401180h)
0040117A lea ebx,[ebx]
00401180 mov ecx,2
00401185 lea eax,[esi+4]
00401188 mov edx,4E20h
0040118D lea ecx,[ecx]
00401190 lea edi,[ecx-2]
00401193 shr edi,1
00401195 movzx edi,word ptr [esi+edi*2]
00401199 add di,word ptr [esi]
0040119C add eax,0Ah
0040119F add di,word ptr [esi+30D3Eh]
004011A6 mov word ptr [eax-0Eh],di
004011AA lea edi,[ecx-1]
004011AD shr edi,1
004011AF movzx edi,word ptr [esi+edi*2]
004011B3 add di,word ptr [esi]
004011B6 add di,word ptr [esi+30D3Eh]
004011BD mov word ptr [eax-0Ch],di
004011C1 mov edi,ecx
004011C3 shr edi,1
004011C5 movzx edi,word ptr [esi+edi*2]
004011C9 add di,word ptr [esi]
004011CC add di,word ptr [esi+30D3Eh]
004011D3 mov word ptr [eax-0Ah],di
004011D7 lea edi,[ecx+1]
004011DA shr edi,1
004011DC movzx edi,word ptr [esi+edi*2]
004011E0 add di,word ptr [esi]
004011E3 add di,word ptr [esi+30D3Eh]
004011EA mov word ptr [eax-8],di
004011EE lea edi,[ecx+2]
004011F1 shr edi,1
004011F3 movzx edi,word ptr [esi+edi*2]
004011F7 add di,word ptr [esi]
004011FA add ecx,5
004011FD add di,word ptr [esi+30D3Eh]
00401204 sub edx,1
00401207 mov word ptr [eax-6],di
0040120B jne main+190h (401190h)
0040120D sub dword ptr [esp+14h],1
00401212 jne main+180h (401180h)
00401218 call ebx
0040121A sub eax,dword ptr [esp+18h]
0040121E add dword ptr [esp+24h],eax
TEST(d,3);
00401222 call ebx
00401224 mov edi,eax
00401226 mov ecx,3E8h
0040122B jmp main+230h (401230h)
0040122D lea ecx,[ecx]
00401230 xor eax,eax
00401232 mov edx,eax
00401234 shr edx,1
00401236 mov dx,word ptr [esp+edx*2+30h]
0040123B add dx,word ptr [esp+30D6Eh]
00401243 inc eax
00401244 add dx,word ptr [esp+30h]
00401249 cmp eax,186A0h
0040124E mov word ptr [esp+eax*2+2Eh],dx
00401253 jl main+232h (401232h)
00401255 sub ecx,1
00401258 jne main+230h (401230h)
0040125A call ebx
0040125C sub eax,edi
0040125E add dword ptr [esp+28h],eax
00401262 sub dword ptr [esp+2Ch],1
00401267 jne main+70h (401070h)
}
for(int i = 0; i < 4; i++)
0040126D mov edi,dword ptr [__imp__printf (4020A0h)]
00401273 xor esi,esi
printf("Time: %f\n", (float)(e[i]) / float(TOTAL_REP) / (float)CLK_TCK);
00401275 fild dword ptr [esp+esi*4+1Ch]
00401279 sub esp,8
0040127C fdiv qword ptr [__real@4059000000000000 (402128h)]
00401282 fdiv qword ptr [__real@408f400000000000 (402120h)]
00401288 fstp qword ptr [esp]
0040128B push offset string "Time: %f\n" (402114h)
00401290 call edi
00401292 inc esi
00401293 add esp,0Ch
00401296 cmp esi,4
00401299 jl main+275h (401275h)
getch();
0040129B call dword ptr [__imp__getch (4020ACh)]
}
004012A1 mov ecx,dword ptr [esp+30D7Ch]
004012A8 pop edi
004012A9 pop esi
004012AA pop ebx
004012AB xor ecx,esp
004012AD xor eax,eax
004012AF call __security_check_cookie (4012B8h)
004012B4 mov esp,ebp
004012B6 pop ebp
004012B7 ret