__rdtscp
Блок, относящийся только к системам Майкрософт
Создает инструкцию rdtscp
, записывает TSC_AUX[31:0]
в память и возвращает 64-разрядный результат счетчика меток времени (TSC).
Синтаксис
unsigned __int64 __rdtscp(
unsigned int * AUX
);
Параметры
AUX
[out] Указатель на расположение, содержащее содержимое регистра TSC_AUX[31:0]
для конкретного компьютера.
Возвращаемое значение
64-разрядное целое число без знака.
Требования
Intrinsic | Архитектура |
---|---|
__rdtscp |
x86, x64 |
Файл<заголовка intrin.h>
Замечания
Встроенная __rdtscp
функция создает инструкцию rdtscp
. Чтобы определить поддержку оборудования для этой инструкции, вызовите __cpuid
встроенную функцию и InfoType=0x80000001
проверьте бит 27 CPUInfo[3] (EDX)
. Этот бит равен 1, если инструкция поддерживается и 0 в противном случае. Если вы запускаете код, использующий встроенную функцию на оборудовании, которое не поддерживает инструкцию rdtscp
, результаты непредсказуемы.
Эта инструкция ожидает выполнения всех предыдущих инструкций, а все предыдущие нагрузки будут глобально видны. Однако это не инструкция сериализации. Дополнительные сведения см. в руководствах Intel и AMD.
Значение значения TSC_AUX[31:0]
зависит от операционной системы.
Пример
#include <intrin.h>
#include <stdio.h>
int main()
{
unsigned __int64 i;
unsigned int ui;
i = __rdtscp(&ui);
printf_s("%I64d ticks\n", i);
printf_s("TSC_AUX was %x\n", ui);
}
3363423610155519 ticks
TSC_AUX was 0
Завершение блока, относящегося только к системам Майкрософт