#include <9pm/stdio.h>
#include <9pm/windows.h>
typedef unsigned __int64 uvlong;
__declspec( naked ) void
rdtsc2(uvlong *p)
{
_asm {
mov ecx, [esp+4]
_emit 0x0F ;RDTSC - get beginning timestamp to edx:eax
_emit 0x31
mov [ecx+4],edx ;save beginning timestamp (1 cycle)
mov [ecx],eax
ret
}
}
__declspec( naked ) uvlong
rdtsc(void)
{
_asm {
_emit 0x0F ;RDTSC - get beginning timestamp to edx:eax
_emit 0x31
ret
}
}
uvlong
foo(uvlong x)
{
return x + 1;
}
void
main(void)
{
uvlong a[10000][3];
int i;
LARGE_INTEGER ti;
for (i=0; i<100; i++) {
a[i][0] = rdtsc();
QueryPerformanceCounter(&ti);
a[i][1] = ti.QuadPart;
a[i][2] = GetTickCount();
Sleep(10);
}
for(i=1; i<100; i++)
printf("%I64d %I64d %I64d %I64d %I64d\n", a[i][0], a[i][1], a[i][2], a[i][0] - a[i-1][0], a[i][1] - a[i-1][1]);
}
syntax highlighted by Code2HTML, v. 0.9.1