<b>(a) </b> __int64 readTSC() { __asm { rdtsc } } <b>(b) </b> long long readTSC(void) { /* Assumes 'long long' is 64 bits, 'unsigned' is 32 */ union { long long complete; unsigned part[2]; } ticks; __asm__ ("rdtsc; mov %%eax,%0;mov %%edx,%1" : "=mr" (ticks.part[0]), "=mr" (ticks.part[1]) : /* No inputs */ : "eax", "edx"); return ticks.complete; }
Example 1: (a) Reading TSC in Microsoft Visual C++; (b) reading TSC in GCC.