#include #include static unsigned cyc_hi = 0; static unsigned cyc_lo = 0; void access_counter(unsigned *hi, unsigned *lo) { asm("rdtsc; movl %%edx,%0; movl %%eax,%1" : "=r" (*hi), "=r" (*lo) : : "%edx", "%eax"); } int main(int argc, char ** argv) { access_counter(&cyc_hi, &cyc_lo); printf("counter = %8.8x.%8.8x\n", cyc_hi, cyc_lo); sleep(1); access_counter(&cyc_hi, &cyc_lo); printf("counter = %8.8x.%8.8x\n", cyc_hi, cyc_lo); return 0; }