RDTSC

RDTSC

L'instruction RDTSC est une instruction pour les processeurs x86.

Sommaire

Description

L'instruction RDTSC est un mnémonique pour ReaD Time Stamp Counter. L'instruction retourne dans le couple de registre EDX:EAX le nombre de ticks[1] écoulés depuis la dernière remise à zéro du processeur (Reset).

L'instruction lit simplement un registre spécial de 64 bits, nommé Time Stamp Counter (compteur temporel) et place le résultat dans les registres EDX et EAX. La partie haute du compteur temporel (32 bits de poids fort) est placée dans le registre EDX tandis que la partie basse (32 bits de poids faible) est placée dans le registre EAX.

  • L'instruction fut ajoutée au processeur Pentium.
Opcode Instruction Description
0F 31 RDTSC Lit le compteur de temps et place le résultat dans les registres EDX et EAX

Drapeaux affectés

Aucun drapeau du registre EFLAGS n'est affecté par cette instruction.

Exceptions générées

Les exceptions générées par l'instruction pour les différents modes d'exécution du processeur sont :

  • Mode protégé
    • Protection générale avec code 0 : #GP(0) ; Condition : Si le drapeau TSD du registre CR4 est armé et que le niveau de privilège est différent de 0.
  • Mode virtuel 8086
    • Protection générale avec code 0 : #GP(0) ; Condition : Si le drapeau TSD du registre CR4 est armé.
  • Mode réel
    • Aucune exception n'est générée dans ce mode d'exécution.

Exemples d'utilisation

Langages C ou C++

GNU C/C++ (IA32 / x86_64)

#ifdef __i386
extern __inline__ uint64_t rdtsc() {
  uint64_t x;
  __asm__ volatile ("rdtsc" : "=A" (x));
  return x;
}
#elif __amd64
extern __inline__ uint64_t rdtsc() {
  uint64_t a, d;
  __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
  return (d<<32) | a;
}
#endif

Microsoft Visual C++ (IA32 seulement)

__declspec(naked)
unsigned __int64 __cdecl rdtsc(void)
{
   __asm
   {
      rdtsc
      ret       ; valeur de retour dans EDX:EAX
   }
}

Langages Pascal ou Delphi

function RDTSC: comp;
var TimeStamp: record case byte of
                 1: (Whole: comp);
                 2: (Lo, Hi: Longint);
               end;
begin
  asm
    db $0F; db $31;
    mov [TimeStamp.Lo], eax
    mov [TimeStamp.Hi], edx
  end;
  Result := TimeStamp.Whole;
end;

Notes

  1. D'après le IA-32 Intel® Architecture Software Developer’s Manual volume 3 le Time Stamp Counter est incrémenté d'environ 9,5 * 10^16 fois en une année pour un processeur cadencé à 3GHz.

Articles connexes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article RDTSC de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • Rdtsc — (англ. Read Time Stamp Counter)  ассемблерная инструкция для платформы x86, читающая счётчик TSC (Time Stamp Counter) и возвращающая его в регистрах EDX:EAX 64 битное количество тактов с момента последнего сброса процессора. rdtsc… …   Википедия

  • RDTSC — …   Википедия

  • TSC — rdtsc (Read Time Stamp Counter) ассемблерная инструкция для платформы Pentium и более новых. Опкод: 0F 31. В многозадачных операционных системах инструкция может быть превращена в привилегированную (установлен 3 бит в управляющем регистре CR4), и …   Википедия

  • Time Stamp Counter — The Time Stamp Counter is a 64 bit register present on all x86 processors since the Pentium. It counts the number of ticks since reset, and is only accessible through the RDTSC instruction. This instruction returns the TSC in EDX:EAX. Its opcode… …   Wikipedia

  • High Precision Event Timer — The High Precision Event Timer (HPET, formerly known as Multimedia Timer) is a hardware timer used in computers. It was developed jointly by Intel and Microsoft.Older operating systems cannot use HPET and run only on hardware that has the older… …   Wikipedia

  • Control register — A control register is a processor register which changes or controls the general behavior of a CPU or other digital device. Common tasks performed by control registers include interrupt control, switching the addressing mode, paging control, and… …   Wikipedia

  • HPET — High Precision Event Timer Le HPET (High Precision Event Timer, soit Timer Événementiel de Haute Précision, aussi connu sous le nom de Timer Multimédia[1]) est un timer (minuterie, métronome, chronomètre, horloge, ...) sous forme de composant… …   Wikipédia en Français

  • High Precision Event Timer — Le HPET (High Precision Event Timer, soit Timer Événementiel de Haute Précision, aussi connu sous le nom de Timer Multimédia[1]) est un timer (minuterie, métronome, chronomètre, horloge, ...) sous forme de composant électronique, présent sur les… …   Wikipédia en Français

  • SecuROM — is a CD/DVD copy protection product, most often used for computer games running under Microsoft Windows, developed by Sony DADC. SecuROM aims to resist home media duplication devices, professional duplicators, and reverse engineering attempts.… …   Wikipedia

  • CryptGenRandom — is a cryptographically secure pseudorandom number generator function that is included in Microsoft s Cryptographic Application Programming Interface. In Win32 programs, Microsoft recommends its use anywhere random number generation is needed. A… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”