RDTSC

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



Catégories :

Jeu d'instruction x86 - Architecture x86 - Microprocesseur

Recherche sur Google Images :


Source image : ivanlef0u.tuxfamily.org
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Page(s) en rapport avec ce sujet :

  • soit avec prise en charge compilo, on entre des instructions asm au milieu de ... RDTSC est garanti par Intel sur l'ensemble des processeurs depuis le Pentium, ... J'ai ajouté quelques fonctions (renvoie du registre TSC, ... (source : vbfrance)

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

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, appelé Time Stamp Counter (compteur temporel) et place le résulat dans les registres EDX et EAX. La partie haute du compteur temporel (32 bits de poids fort) est positionnée dans le registre EDX alors que la partie basse (32 bits de poids faible) est positionnée dans le registre EAX.

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 :

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 uniquement)

__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. Selon 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.

Recherche sur Amazone (livres) :




Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/RDTSC.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 07/04/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu