Soutenez-nous

FAQ AssembleurConsultez toutes les FAQ

Nombre d'auteurs : 8, nombre de questions : 50, dernière mise à jour : 8 juillet 2013 

 
OuvrirSommaireF.A.Q. Assembleur x86 / 64Généralités

Bien sûr, mais à une seule condition : si votre système d'exploitation est un système 64 bits !
Les processeurs 64 bits peuvent exécuter du code 16, 32 ou 64 bits mais c'est le système d'exploitation qui détermine dans quel mode d'exécution il peut exécuter du code. Cela implique qu'un système d'exploitation 32 bits fonctionnant sur un processeur 64 bits ne pourra pas exécuter du code 64 bits.

N.B : Windows Vista 64 bits n'exécute plus les programmes 16 bits. Les programmes 32 bits, eux, sont exécutés au travers de WOW64.

Créé le 29 avril 2007  par Neitsa

Une seule nouvelle instruction d'ordre "général" a fait son apparition : MOVSXD. Certaines des instructions sont simplement étendues pour manipuler des données 64 bits tandis que d'autres ne sont plus disponibles dans le mode 64 bits.
Les processeurs de dernières générations apportent toutefois des instructions spécialisées, notamment au travers des jeux d'instructions SSE3 et SSSE3 et des instructions de virtualisation, mais ces instructions ne sont pas réservées spécifiquement au mode d'exécution 64 bits.

Créé le 29 avril 2007  par Neitsa

On trouve toujours les mêmes registres généraux que sous 32 et 16 bits. Toutefois les registres ont été étendus à 64 bits.

Pour prendre un exemple avec EAX (qui, étendu à 64 bits, devient RAX) :
En mode 64 bits, on peut toujours accéder à :

  • EAX : partie basse 32 bits (bits 0 à 31) de RAX.
  • AX : partie basse 16 bits (bits 0 à 15) de EAX.
  • AH : partie haute 8 bits (bits 8 à 15) de AX.
  • AL : partie basse 8 bits (bit 0 à 7) de AX.

On ne peut ni accéder directement à la partie haute 16 bits de EAX, ni à la partie haute 32 bits de RAX.

Créé le 29 avril 2007  par Neitsa

Outre les registres 32 bits étendus à 64 bits, on trouve 8 nouveaux registres généraux. Les nouveaux registres généraux 64 bits, au nombre de 8, sont nommés de R8 à R15 et sont utilisables tout comme les autres registres généraux. On dénombre donc à présent les registres suivants :

  • 16 registres 8 bits « bas » : AL, BL, CL, DL, SIL, DIL, BPL, SPL, R8B, R9B, R10B, R11B, R12B, R13B, R14B, R15B. [Avec ‘B' pour BYTE]. On notera ici que les parties 8 bits de RSI (SIL), RDI (DIL), RBP (BPL) et RSP (SPL) sont désormais accessibles directement (ce qui n'était pas le cas en 16 ou 32 bits où, par exemple, la partie 8 bits du registre ESI n'était pas accessible directement).
  • 4 registres 8 bits « haut » : AH, BH, CH, DH (utilisable seulement dans un cas bien précis : quand un préfixe REX est présent).
  • 16 registres 16 bits : AX, BX, CX, DX, DI, SI, BP, SP, R8W, R9W, R10W, R11W, R12W, R13W, R14W, R15W. [Avec ‘W' pour WORD]
  • 16 registres 32 bits : EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, R8D, R9D, R10D, R11D, R12D, R13D, R14D, R15D. [Avec ‘D' pour DWORD].
  • 16 registres 64 bits : RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8, R9, R10, R11, R12, R13, R14, R15.
Créé le 29 avril 2007  par Neitsa

On notera l'apparition ou l'extension des registres suivants :

  • 8 nouveaux registres SSE : XMM8 à XMM15.
  • Le passage d'EFLAG (registre de drapeaux) en 64 bits, qui devient : RFLAG.
  • Le pointeur d'instruction (EIP en 32 bits) passe lui aussi en 64 bits et devient : RIP.
  • 8 nouveaux registres système de contrôle : Cr8 à Cr15.
  • 8 nouveaux registres de déboguage : Dr8 à Dr15.
Créé le 29 avril 2007  par Neitsa
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004-2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.