Получение циклов ЦП с помощью RDTSC - почему значение RDTSC всегда увеличивается?

Я хочу получить циклы ЦП в определенной точке. Я использую эту функцию в этой точке:

static __inline__ unsigned long long rdtsc(void)
{
    unsigned long long int x;
    __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
    return x;
}

Проблема в том, что она всегда возвращает возрастающее (в каждом прогоне). Это как будто относится к абсолютному времени.

Я неправильно использую функции?

16
задан user1106106 22 December 2011 в 10:45
поделиться