Instrukce RDTSC je instrukce pro procesory x86 .
RDTSC instrukce je mnemotechnická pro r ea d t ime s TAMP c ounter . Instrukce vrací v registrovém páru EDX: EAX počet tiků, které uběhly od posledního resetu procesoru ( Reset ).
Instrukce jednoduše načte speciální 64bitový registr s názvem čítač časových značek a umístí výsledek do registrů EDX a EAX. Horní část čítače času (32 nejvýznamnějších bitů) je umístěna v registru EDX, zatímco spodní část (32 nejméně významných bitů) je umístěna v registru EAX.
Pokyn byl přidán k procesoru Pentium .
Operační kód | Návod | Popis |
---|---|---|
0F 31 | RDTSC | Přečte počítadlo času a umístí výsledek do registrů EDX a EAX |
Touto instrukcí není ovlivněn žádný příznak v registru EFLAGS .
Výjimky generované instrukcí pro různé režimy provádění procesoru jsou:
GNU C / C ++ (IA32 / x86_64)
#ifdef __i386 extern __inline__ uint64_t rdtsc(void) { uint64_t x; __asm__ volatile ("rdtsc" : "=A" (x)); return x; } #elif defined __amd64 extern __inline__ uint64_t rdtsc(void) { uint64_t a, d; __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d)); return (d<<32) | a; } #endifMicrosoft Visual C ++ (pouze IA32)
__declspec(naked) unsigned __int64 __cdecl rdtsc(void) { __asm { rdtsc ret ; valeur de retour dans EDX:EAX } }