All pastes #839014 Raw Edit

Unnamed

public text v1 · immutable
#839014 ·published 2007-12-30 20:19 UTC
rendered paste body
VS2k3
--- 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