IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ AssembleurConsultez toutes les FAQ

Nombre d'auteurs : 9, nombre de questions : 56, dernière mise à jour : 8 décembre 2017  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum Assembleur de Developpez.com et de l'expérience personnelle des auteurs. Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être exhaustive ; vous pouvez la compléter avec vos propres questions/réponses ou proposer des corrections ou des compléments à des questions/réponses existantes.

Nous espérons que cette FAQ saura répondre à un maximum de vos questions. Nous vous en souhaitons une bonne lecture.

L'équipe Assembleur de Developpez.com.

SommaireF.A.Q. Assembleur x86 / 64Généralités (6)
précédent sommaire suivant
 

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.

Mis à jour le 29 avril 2007 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.

Mis à jour le 29 avril 2007 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.

Mis à jour le 29 avril 2007 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 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 (utilisables 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.

Mis à jour le 29 avril 2007 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ébogage : Dr8 à Dr15.

Mis à jour le 29 avril 2007 Neitsa

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

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 © 2024 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.