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

C Discussion :

Décalage de n bit


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Par défaut Décalage de n bit
    Bonjour a tous

    La fonction suivante fait un décalage a droite de n bit dans mot de 64 bits

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    static inline Word64 SAR64(Word64 x, int n)
    {
            unsigned int xLo = ((unsigned int *)&x)[0];
            int xHi = ((int *)&x)[1];
            unsigned char nb = (unsigned char)n;
     
            if (n < 32) {
                         __asm {
                                    mov edx, xHi
                                    mov eax, xLo
                                    mov cl, nb
                                     shrd eax, edx, cl
                                    sar edx, cl
                                      }
     
     
            } else if (n < 64) {   */
                    /* sar masks cl to 0x1f */
                         __asm {
                                    mov edx, xHi
                                    mov eax, xHi
                                    mov cl, nb
                                    sar edx, 31
                                   sar eax, cl
                                 }
                    } else {
                          __asm {
                                      sar xHi, 31
                                      mov eax, xHi
                                      mov edx, xHi
                                    }
                              }
     
    }
    Pouvez vous m'aider a traduire cette fonction en C

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut


    les instructions sal (ou shl) sont traduites en C par l'opérateur <<. Quant à l'opérateur >>, ca peut être sar ou shr selon l'implémentation. D'habitude on utilise ces opérateurs sur des entiers non signés dans ce cas on peut dire que << est l'équivalent de shl et >> l'équivalent de shr. S'il y a autre chose que tu ne comprends pas, c'est plus un problème de langage C, poste dans le forum Assembleur.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut
    Pourquoi ne pas implémenter ta propre fonction. Faire un décalage de n bits, c'est pas si difficile.

  4. #4
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Par défaut
    Bonjour
    je peut pas implémenter cette fonction parce que je travail sur l'ARM,
    en plus je maitrise pas bien l'assembleur ARM.

  5. #5
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par doomtn
    Bonjour
    je peut pas implémenter cette fonction parce que je travail sur l'ARM,
    en plus je maitrise pas bien l'assembleur ARM.
    Tu veux faire du C (code portable, indépendant de la machine) ou de l'assembleur ARM? En C il y a les opérateurs << et >> pour effectuer des décalages respectivement vers la gauche et vers la droite. Sinon il ya le forum assembleur si tu veux des instructions spécifiques à l'ARM.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Par défaut
    Citation Envoyé par Melem Voir le message
    Tu veux faire du C (code portable, indépendant de la machine) ou de l'assembleur ARM? En C il y a les opérateurs << et >> pour effectuer des décalages respectivement vers la gauche et vers la droite. Sinon il ya le forum assembleur si tu veux des instructions spécifiques à l'ARM.
    Mon code est conçue pour l'architecture ARM mais si quelqun peut me la traduire
    en C je m'occupe du reste
    Je maitrise pas bien l'assembleur et l'assembleur ARM c'est pour sa je veux traduire cette fonctions en C.
    Mon problème est comment peut on obtenir les 32 bits de poids fort et 32 bits de poids faible d'un entier de type long long (64bits)

    Merci d'avance

Discussions similaires

  1. Décalage de bits
    Par Kraz dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 21/10/2006, 18h09
  2. décalages de bits
    Par seb95 dans le forum Java ME
    Réponses: 4
    Dernier message: 05/03/2006, 04h03
  3. décalage de bits
    Par cedre22 dans le forum Langage
    Réponses: 13
    Dernier message: 17/01/2006, 09h33
  4. Multiplication par décalage de bits
    Par tekman54000 dans le forum Assembleur
    Réponses: 2
    Dernier message: 25/10/2005, 11h35
  5. Décalage de bit sur unsigned char [8]
    Par dboulange dans le forum C++
    Réponses: 14
    Dernier message: 26/07/2005, 14h10

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