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 :

Paramètres avec imul et idiv


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #21
    Membre actif

    Inscrit en
    Février 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 200
    Points : 235
    Points
    235
    Par défaut
    Ce que je souligne, c'est qu'il connaît l'ambitus du résultat -> <32 bits
    C'est à peu près la seule chose clairement définie.
    Cela doit donc apparaître de manière explicite dans l'écriture.

    Le cas "litigieux" est celui ou a<=2^32/2 -> +1073741823 / -1073741824 (puisqu'il est question d'IMUL): Une valeur max. sur 30 bits multipliée par une valeur Max <=2.
    Tu reconnaîtras que c'est un cas limite ou un simple SAL 1 ou 0 est largement suffisant.

    Allons plus loin, plus la résolution de "b" augmente plus celle de "a" diminue. Très rapidement, la chose qui vient à l'esprit c'est qu'il est question d'un produit de deux integer signés de taille word... -32768 * -32768.
    C'est pour cela qu'il est important de le faire apparaître dans l'écriture, non seulement pour des raisons de vitesse (bien que ça ne soit pas l'important de la problématique exposée) mais surtout pour une raison de maintenance facilitée par une écriture conventionnée (coder propre sous-entend le respect de certaines règles basiques).

  2. #22
    Membre à l'essai
    Profil pro
    Lycéen
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Et si l'utilisateur entre un nombre "a" qui a une taille qui dépasse un word, mais le résultat de a * b <= 32 bits ?

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Rémi > Heu, ce n'est pas que je sois insensible à l'application d'une méthodologie correcte, mais là je me sens un peu dépassé.

    Ce que tu veux me dire, c'est que si je suis sûr d'avoir un résultat qui peut s'écrire sur 32 bits, cela signifie que mes opérandes peuvent s'écrire sur 16 bits chacune. Donc, je peux utiliser la syntaxe qui stocke le résultat dans DX:AX ?

  4. #24
    Membre actif

    Inscrit en
    Février 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 200
    Points : 235
    Points
    235
    Par défaut
    Il y a de fortes chances: Il serait plus sûr de vérifier, dans le contexte de ton application (ou exemple) l'ambitus des valeurs a et b. afin de trancher: Savoir si, effectivement, tu manipules des words ou des dwords en entrée.

    @Youscef: Je pense t'avoir répondu par la même occasion.

    Beaucoup de bugs sont surtout liés à la confusion LP contenu de LP mais aussi Tailleset corruptions de datas, de registres comme edx (qui sont implicites hélas). Toujours protéger les registres ebx esi edi, respecter les convention d'utilisation des divers registres (hormis à la rigueur dans de rares algos sioux quidemande à tordre les possibilités et tirer dessus au maximum). Une bonne utilisation des registre augmente la lisibilité de ton code par tout un chacun, surtout toi dans quelques mois .

    Pour la méthode c'est relativemnt simple: Le code doit être le plus clair possible afin que la documentation millimètrée soit quasiment inutile.
    Une fois que ton code est à ce niveau d'écriture et de lisibilité (on sait exatement que la copie de données se fait sur des char, des signed etc. que les labels possèdent des nom longs et clairs sans abréviations autres que des préfixes: LP.TABLE.MaSuiteZeroCent, STR.A.LeNomDeLaFenetre, ID.DansMaTableDeTrisHexa, LEN.STR.A.LeNomDeLaFenetreMain PATH.RepertoirePrincipale etc. à toi de fabriquer une convention stricte à laquelle tu te tiens(dras) avec rigueur) tu peux commencer à documenter de manière plus précise sur la stratégie que tu mets en oeuvre sans te perdre dans les détails qui sont maintenant explicités par le code lui même.

    PS. Merci Obsidian pour les balises de code, désolé...

  5. #25
    Membre à l'essai
    Profil pro
    Lycéen
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Rémi Coquet> Dès le début j'étais d'accord avec ce que tu dis, je ne t'ai jamais contrarié, puisque tu parles d'un cas général.
    Mais dans ce cas, le plus logique serait d'utiliser des dword, et pas des word, car il utilise la fonction scanf("%d", &var). en C, var doit être un int (dword) et pas un short (word), donc intput1 et input2 doivent être manipulés comme des dword, et je trouve que c'est plus lisible car ça montre au lecteur du code que l'utilisateur peut entrer des dword.

Discussions similaires

  1. Déterminer une requête paramétrée avec LIKE
    Par priest69 dans le forum Access
    Réponses: 4
    Dernier message: 24/10/2005, 19h29
  2. [Tableaux] passer un paramètre avec un popup
    Par lnikolanta dans le forum Langage
    Réponses: 6
    Dernier message: 11/10/2005, 16h36
  3. Réponses: 2
    Dernier message: 12/09/2005, 15h33
  4. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37
  5. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00

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