__asm {
movq mm1, A
movq mm2, B
pmullw mm1, mm2
movq B, mm1
}
#include <stdio.h>
short A[4] = { 1,2,3,4 };
short B[4] = { 1,2,3,4 };
int main()
{
short rez;
__int64 StartTime, EndTime;
__asm {
RDTSC
mov dword ptr [StartTime], eax
mov dword ptr [StartTime+4], edx
}
for( int i=0; i < 4; ++i )
rez = A[i]*B[i];
__asm {
RDTSC
mov dword ptr [EndTime], eax
mov dword ptr [EndTime+4], edx
}
printf( "User Time -> %lu\n", EndTime-StartTime );
__asm {
movq mm1, A
movq mm2, B
pmullw mm1, mm2
movq B, mm1
}
__asm {
RDTSC
mov dword ptr [StartTime], eax
mov dword ptr [StartTime+4], edx
movq mm1, A
movq mm2, B
pmullw mm1, mm2
movq B, mm1
RDTSC
mov dword ptr [EndTime], eax
mov dword ptr [EndTime+4], edx
EMMS
}
printf( "MMX Time -> %lu\n", EndTime-StartTime );
return 0;
}
__asm {
movq mm1, A
movq mm2, B
pmullw mm1, mm2
movq B, mm1
}
#include <stdio.h>
short A[4] = { 1,2,3,4 };
short B[4] = { 1,2,3,4 };
int main()
{
short rez;
__int64 StartTime, EndTime;
__asm {
RDTSC
mov dword ptr [StartTime], eax
mov dword ptr [StartTime+4], edx
}
for( int i=0; i < 4; ++i )
rez = A[i]*B[i];
__asm {
RDTSC
mov dword ptr [EndTime], eax
mov dword ptr [EndTime+4], edx
}
printf( "User Time -> %lu\n", EndTime-StartTime );
__asm {
movq mm1, A
movq mm2, B
pmullw mm1, mm2
movq B, mm1
}
__asm {
RDTSC
mov dword ptr [StartTime], eax
mov dword ptr [StartTime+4], edx
movq mm1, A
movq mm2, B
pmullw mm1, mm2
movq B, mm1
RDTSC
mov dword ptr [EndTime], eax
mov dword ptr [EndTime+4], edx
EMMS
}
printf( "MMX Time -> %lu\n", EndTime-StartTime );
return 0;
}
mov dword ptr [StartTime], eax
mov dword ptr [StartTime+4], edx
printf( "User Time -> %lu\n", EndTime-StartTime );
__asm {
finit
RDTSC
mov dword ptr [StartTime], eax
mov dword ptr [StartTime+4], edx
movq mm1, A
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.