2013 06 13 20 53 [程式] 再談用RDTSC 來做performance測量(3)

之前的寫法在gcc 64bit會有問題~

在網路上找到下面寫法~

#include <stdio.h>
#include <stdint.h>

static inline uint64_t rdtsc(void) { uint32_t eax = 0, edx; __asm__ __volatile__("cpuid;" "rdtsc;" : "+a" (eax), "=d" (edx) : : "%rcx", "%rbx", "memory"); __asm__ __volatile__("xorl %%eax, %%eax;" "cpuid;" : : : "%rax", "%rbx", "%rcx", "%rdx", "memory"); return (((uint64_t)edx << 32) | eax); }