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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Pourquoi "mov edi,edi" dans le prologue des fonctions ?


Sujet :

Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 126
    Points : 58
    Points
    58
    Par défaut Pourquoi "mov edi,edi" dans le prologue des fonctions ?
    Bonjour a tous,une question que je n'arrive pas a résoudre au début de chaque proloque de fonction on retrouve souvent cette instruction:

    A quoi sert cette instruction etant donner que l'on place la valeur du registre de EDI dans EDI est ce que cela a une influance sur les drapeau ?Merci de vos réponse par avances.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 373
    Points : 23 629
    Points
    23 629
    Par défaut
    Citation Envoyé par chuko Voir le message
    A quoi sert cette instruction etant donner que l'on place la valeur du registre de EDI dans EDI est ce que cela a une influance sur les drapeau ?Merci de vos réponse par avances.
    C'est une bonne question et ne connaissant pas la réponse non plus, je suis allé Googliser un coup. J'ai trouvé çà :

    http://blogs.msdn.com/ishai/archive/...24/165143.aspx
    http://msmvps.com/blogs/kernelmustar.../25/44413.aspx

    « MOV EDI,EDI is indeed a 2-byte no-op that is there to enable hot-patching. It enables the application of a hot-fix to a function without a need for a reboot, or even a restart of a running application. Instead, at runtime, the 2-byte NOP is replaced by a short jump to a long jump instruction that jumps to the hot-fix function. A 2-byte instruction is required so that when patching the instruction pointer will not point in a middle of an instruction. »
    Donc, visiblement c'est un NOP maison sur deux octets pour que certains noyaux puissent patcher la fonction en temps réel (pour mettre un hook dessus ?) et cette manière de faire (plutôt qu'un double NOP) sert à garantir l'atomicité de l'instruction, histoire que le déroulement ne soit pas interrompu entre les deux NOP si on a l'intention de les remplacer (sinon, au retour, BOUM !).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 126
    Points : 58
    Points
    58
    Par défaut re re reponse
    Merci d'avoir répondu et navré de poster aussi tard. Merci, maintenant je sais au moins pourquoi on retrouve cet opcode à chaque fois. Merci encore.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 373
    Points : 23 629
    Points
    23 629
    Par défaut
    Citation Envoyé par chuko Voir le message
    Merci d'avoir repondu et n'avrer de poster aussi tard , merci maintenant je sais au moin pourquoi on retrouver cette opcode a chaque fois merci encore
    Pas de problème, merci d'avoir réagi, mais n'oublie pas !

    À bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Perdu dans la priorité des fonctions
    Par Dev222 dans le forum Langage
    Réponses: 2
    Dernier message: 18/08/2013, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo