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

x86 32-bits / 64-bits Assembleur Discussion :

Influence des instructions INC et DEC sur les flags Carry et Overflow


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut Influence des instructions INC et DEC sur les flags Carry et Overflow
    Salut !

    J'ai deux questions à vous poser, au sujet des instructions INC et DEC.

    1) Pourquoi ces instructions ne modifient pas CF ? Je suppose que c'est voulu et qu'il y a une raison spécifique à cela.

    2) Ces instructions ne modifient pas CF mais par contre elles modifient OF. C'est étrange : pourquoi modifier l'une et pas l'autre ?

    Je trouve ces deux points très étonnants.

    Merci pour vos réponses.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    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 368
    Points : 23 620
    Points
    23 620
    Par défaut
    C'est une très bonne question et, après vérification, il semblerait que ce soit le cas sur plusieurs micro-processeurs, dont le 6809, sur lequel j'ai pas mal développé, et dont j'étais persuadé qu'il agissait autrement. Rien de probant à première vue sur le Web. Il faut aller consulter le manuel d'Intel pour avoir un début de réponse :

    Citation Envoyé par Manuel
    DEC—Decrement by 1
    Code Text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Opcode           Instruction              Description
                       DEC r/m8                 Decrement r/m8 by 1
      FE /148+rw
                       DEC r32                  Decrement r32 by 1
      48+rd


    Description

    This instruction subtracts one from the destination operand, while preserving the state of the CF flag. The destination operand can be a register or a memory location. This instruction allows a loop counter to be updated without disturbing the CF flag. (To perform a decrement operation that updates the CF flag, use a SUB instruction with an immediate operand of 1.)
    Donc, apparemment, c'est volontaire pour pouvoir manipuler des compteurs sans influer sur une opération en cours. Moi, j'aurais aussi considéré DEC et INC comme des opérations arithmétiques élémentaires.

    Dans le même genre, LDx et STx sur 6809 ne modifient pas la retenue, mais agissent quand même sur N et Z, et remettent V à zéro. Un MOV sur x86, lui, n'affecte aucun flag. C'est ennuyeux parce que cela oblige à faire des tests explicites sur ce que l'on vient de charger.

  3. #3
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    je vais dans le même sens qu'Obsidian. INC et DEC sont utiles pour incrémenter des indices de boucle ou de tableau sans influer sur les opérations arithmétiques subséquentes.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2014, 19h37
  2. Exercice sur les flags carry et overflow
    Par mouradcapo dans le forum x86 16-bits
    Réponses: 0
    Dernier message: 31/12/2012, 14h48
  3. Réponses: 10
    Dernier message: 16/04/2010, 09h50
  4. Réponses: 5
    Dernier message: 13/03/2007, 23h20

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