__rdtscp
Seção específica da Microsoft
Gera a rdtscp
instrução, grava TSC_AUX[31:0]
na memória e retorna o resultado do TSC (Contador de Carimbo de Data/Hora) de 64 bits.
Sintaxe
unsigned __int64 __rdtscp(
unsigned int * AUX
);
Parâmetros
AUX
[out] Ponteiro para um local que conterá o conteúdo do registro TSC_AUX[31:0]
específico a um computador.
Valor retornado
Uma contagem em escala de inteiros sem sinal de 64 bits.
Requisitos
Intrinsic | Arquitetura |
---|---|
__rdtscp |
x86, x64 |
Arquivo de cabeçalho<intrin.h>
Comentários
O __rdtscp
intrínseco gera a instrução rdtscp
. Para determinar o suporte de hardware para esta instrução, chame o intrínseco __cpuid
com InfoType=0x80000001
e verifique o bit 27 de CPUInfo[3] (EDX)
. Esse bit será 1 se a instrução for compatível e, caso contrário, 0. Se você executar código que usa o intrínseco em hardware que não dá suporte à instrução rdtscp
, os resultados serão imprevisíveis.
Essa instrução aguarda até que todas as instruções anteriores tenham sido executadas e todas as cargas anteriores fiquem visíveis globalmente. No entanto, ela não é uma instrução serializadora. Para obter mais informações, confira os manuais da Intel e da AMD.
O significado do valor em TSC_AUX[31:0]
depende do sistema operacional.
Exemplo
#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
Fim da seção específica da Microsoft