__rdtscp
Section spécifique à Microsoft
Génère l’instruction rdtscp
, écrit TSC_AUX[31:0]
en mémoire et retourne le résultat du compteur d’horodatage 64 bits (TSC).
Syntaxe
unsigned __int64 __rdtscp(
unsigned int * AUX
);
Paramètres
AUX
[out] Pointeur vers un emplacement qui contiendra le contenu du registre TSC_AUX[31:0]
spécifique à l’ordinateur.
Valeur retournée
Nombre de graduations entiers non signés 64 bits.
Spécifications
Intrinsic | Architecture |
---|---|
__rdtscp |
x86, x64 |
Fichier<d’en-tête intrin.h>
Notes
L’intrinsèque __rdtscp
génère l’instruction rdtscp
. Pour déterminer la prise en charge matérielle de cette instruction, appelez l’intrinsèque __cpuid
avec InfoType=0x80000001
et vérifiez le bit 27 de CPUInfo[3] (EDX)
. Ce bit est 1 si l’instruction est prise en charge, et 0 sinon. Si vous exécutez du code qui utilise l’intrinsèque sur le matériel qui ne prend pas en charge l’instruction rdtscp
, les résultats sont imprévisibles.
Cette instruction attend que toutes les instructions précédentes aient été exécutées et que toutes les charges précédentes soient globalement visibles. Toutefois, il ne s’agit pas d’une instruction sérialisante. Pour plus d’informations, consultez les manuels Intel et AMD.
La signification de la valeur dans TSC_AUX[31:0]
dépend du système d’exploitation.
Exemple
#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
FIN de la section spécifique à Microsoft