Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Décalage de n bit [ Système / Autre ] (sniper83)

jeudi 17 janvier 2008 à 21:58:18 | Décalage de n bit

sniper83

Bonjour a tous

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

typedeflonglong Word64;
 
staticinline Word64 sar64(Word64 valeur, int nb)
{int temoin,b;
Word64 provisoir;
unsignedint poidfort,poidfaible;
 
provisoir=valeur;
provisoir>>=32;
poidfort=(int)provisoir;

provisoir=valeur;
poidfaible=(int)provisoir;



nb &= 0x3F; // prudence : pas plus de 63 décalages
 
for(b = 0; b < nb; b++)
{
temoin = poidfort & 0x00000001;
poidfort >>= nb;
poidfaible >>= nb;
poidfaible |= temoin;

}


provisoir=0;
provisoir=poidfort;
provisoir<<=32;
provisoir+=poidfaible;

return provisoir;
}
Pouvez vous m'aidez a l'optimisé par du assembleur ARM ou avec des changements dans le code.
sachant que la platform est le microcontroleur ARM.
Merci d'avance.


dimanche 20 janvier 2008 à 15:53:00 | Re : Décalage de n bit

Spoolega

Bonjour,

Je pense que ta boucle for peut être améliorée un peu:
   poidfaible >>= nb;
   poidfaible |= temoin;
a changer en :  poidfaible = (poidfaible >> nb) | temoin;

Il me semble que le code peut être optimisé, après la boucle for par exemple:
provisoir=0;
provisoir=poidfort;
la première instruction (provisoir=0) ne sert à rien, puisque tu affectes une autre valeur juste après.

Ces lignes peuvent être améliorées je pense:
   provisoir=poidfort;
   provisoir<<=32;  
   provisoir+=poidfaible;
   return provisoir;
par :
   provisoir = poidfort;
   return ( (provisoir<<32) + poidfaible );

Ces modifications nous font gagner quelques cycles machines.
 
++




Cette discussion est classé dans : int, provisoir, poidfort, poidfaible, word64


Répondre à ce message

Sujets en rapport avec ce message

Aide pour mega debutant [ par C++ ] Salut, bon alors je vien d ouvrir c++ mais comment mettre un code sur un boutton ???par exemple ce code comment je doits le mettre sur un bouton :int Problème de "pression de touches" [ par Quiske ] Bonjour tout le monde , je suis un programmeur débutant jeune 14 - 15 ans qui a un problème :Je voudrais dire a l'ordinateur que j'appuie sur une tou Help Debutant [ par Kaouane ] Salut,je voudrais juste savoir les erreurs qu'il y'a dans ce programme qui vam e servir a retenir les syntaxe d'une classe:#include class addition{int Heeeelp .... [ par Guillaume ] J'ai ca : (programme tres simplifié ... bien sur ...)#include #include class TMAC { public: void getVAR();};void TMAC::getVAR() { printf("%d\n",Ai); Pourquoi ca marche pas, c'est tout bete pourtant ! [ par Coyito ] SalutQuand je fais avec VC6:int *b;b= 7992060;(je veux que b pointe sur l'adresse mémoire 7992060)J'ai une erreur : error C2440: '=' : cannot convert [debutant] Simple mais comment faire [ par Coyito ] bonjourj'ai dans mon prgint *b;b est un pointeur vers un int, comment puis connaitre la valeur de cet int sans modifier le programme en amont ???Merci int to char ! [ par nullspace ] Voila mon problème !J'ai une résultat sous forme de variable INT, et je veux que ce résultat soit affecté à une variable de type CHAR.Genre, si j'ai 6 Variable int sur le disque... [ par nullspace ] Je cherche à enregistrer et lire sur le disque par ofstream et ifstream à partir de variables de type int.Seulement il m'écrit sous format texte.En vb Liste des propriétés/fonctions d'une librairie disponible???? [ par nullspace ] Oui je voulais savoir s'il y avait un moyen de connaitre toutes les propriétés et fonction disponible d'une librairie, genre un utilitaire...Par exemp Pas compris les arguments [ par Bog ] Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.