__rdtscp
Microsoft 固有の仕様
rdtscp
命令を生成し、TSC_AUX[31:0]
をメモリに書き込み、64 ビット タイム スタンプ カウンター (TSC) の結果を返します。
構文
unsigned __int64 __rdtscp(
unsigned int * AUX
);
パラメーター
AUX
[out] コンピューター固有のレジスタ TSC_AUX[31:0]
の内容を格納する場所へのポインター。
戻り値
64 ビット符号なし整数型のティック数。
要件
Intrinsic | Architecture |
---|---|
__rdtscp |
x86、x64 |
ヘッダー ファイル<intrin.h>
解説
__rdtscp
組み込みでは rdtscp
命令が生成されます。 この命令のハードウェア サポートを判断するには、InfoType=0x80000001
で __cpuid
組み込みを呼び出し、CPUInfo[3] (EDX)
のビット 27 を確認します。 命令がサポートされている場合、このビットは 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
Microsoft 固有の仕様はここまで