by on May 31, 2010
While searching for a method to benchmark/profile some functions in C I stumbled upon the RDTSC 1. The TSC is a specific register available at least on x86 processors since the Pentium which counts the processor ticks since reset. The TSC is returned on the RDTSC call (opcode 0F 31) in EDX:EAX.
The following C function worked for me on x86_64 linux:
static inline unsigned long rdtsc()
{
unsigned int lo, hi;
__asm__ __volatile__("rdtsc" : "=a" (lo), "=d" (hi));
return (unsigned long) hi << 32 | lo;
}Read Time Stamp Counter↩