__rdtscp
Specyficzne dla firmy Microsoft
Generuje instrukcję rdtscp
, zapisuje TSC_AUX[31:0]
w pamięci i zwraca wynik 64-bitowego licznika sygnatury czasowej (TSC).
Składnia
unsigned __int64 __rdtscp(
unsigned int * AUX
);
Parametry
AUX
[out] Wskaźnik do lokalizacji, która będzie zawierać zawartość rejestru TSC_AUX[31:0]
specyficznego dla maszyny .
Wartość zwracana
64-bitowa liczba niepodpisanych liczb całkowitych.
Wymagania
Nieodłączny | Architektura |
---|---|
__rdtscp |
x86, x64 |
Plik<nagłówka intrin.h>
Uwagi
Funkcja wewnętrzna __rdtscp
generuje instrukcję rdtscp
. Aby określić obsługę sprzętu dla tej instrukcji, wywołaj __cpuid
funkcję wewnętrzną za pomocą InfoType=0x80000001
polecenia i sprawdź bit 27 z CPUInfo[3] (EDX)
. Ten bit to 1, jeśli instrukcja jest obsługiwana, a w przeciwnym razie 0. Jeśli uruchamiasz kod korzystający z wewnętrznego sprzętu, który nie obsługuje rdtscp
instrukcji, wyniki są nieprzewidywalne.
Ta instrukcja czeka na wykonanie wszystkich poprzednich instrukcji, a wszystkie poprzednie obciążenia są globalnie widoczne. Jednak nie jest to instrukcja serializacji. Aby uzyskać więcej informacji, zobacz podręczniki firmy Intel i AMD.
Znaczenie wartości w TSC_AUX[31:0]
pliku zależy od systemu operacyjnego.
Przykład
#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
END Microsoft Specific