검증 코드 문제 있으면 알려주세요.


int main()

{

i8u  src0_[MEM_SIZE * 2];

i8u  src1_[MEM_SIZE * 2];

i8u  src2_[MEM_SIZE * 2];

i8u  src3_[MEM_SIZE * 2];

int* src0 = (int*)(src0_ + SRC_OFFSET);

int* src1 = (int*)(src1_ + SRC_OFFSET);

int* src2 = (int*)(src2_ + SRC_OFFSET);

int* src3 = (int*)(src3_ + SRC_OFFSET);

int* tgt0 = (int*)(src0_ + TGT_OFFSET);

int* tgt1 = (int*)(src1_ + TGT_OFFSET);

int* tgt2 = (int*)(src2_ + TGT_OFFSET);

int* tgt3 = (int*)(src3_ + TGT_OFFSET);


i64u set_, end_, min_;

i64u set0, end0, min0;

i64u set1, end1, min1;

i64u set2, end2, min2;


i64u t0, t1, t2;

t0 = t1 = t2 = 0;

min_ = min0 = min1 = min2 = (i64u)-1LL;


int try_count = LOOP_COUNT;

int err1, err2, err3;

err1 = err2 = err3 = 0;

while (try_count--)

{

for (int i = 0; i < MEM_SIZE * 2; ++i) src0_[i] = i;

for (int i = 0; i < MEM_SIZE * 2; ++i) src1_[i] = i;

for (int i = 0; i < MEM_SIZE * 2; ++i) src2_[i] = i;

for (int i = 0; i < MEM_SIZE * 2; ++i) src3_[i] = i;

memmove(tgt0, src0, MEM_SIZE);

memmove_tsutsu(tgt1, src1, MEM_SIZE);

memmove_codesafer(tgt2, src2, MEM_SIZE);

memmove(tgt3, src3, MEM_SIZE);

if (memcmp(src0_, src1_, sizeof(src1_)) != 0)

{

err1++;

}

if (memcmp(src0_, src2_, sizeof(src2_)) != 0)

{

err2++;

}


if (memcmp(src0_, src3_, sizeof(src3_)) != 0)

{

err3++;

}

}

printf("error count: "

" memmove: %d "

" tsutsu: %d "

" codesafer: %d "

, err3

, err1

, err2);

getchar();


return 0;

}


결과 


x86:

error count:

        memmove: 0

        tsutsu: 0

        codesafer: 0


x64:

error count:

        memmove: 0

        tsutsu: 1000

        codesafer: 1000