ben si...Envoyé par fveysseire
ben non...ce serais plus logique que 0x0001 devienne 0xF000.
ben si...Envoyé par fveysseire
ben non...ce serais plus logique que 0x0001 devienne 0xF000.
Excellent !Envoyé par Jean-Marc.Bourguet
Autant pour moi on passe bien de 0x0001 à 0x8000 en faisant une rotation à droite.Envoyé par Emmanuel Delahaye
Désolé pour mon erreur.![]()
Merci a tous
Je vais essayer de bidouiller quekchose, avec NASM, vu que l'assembleur AS de gcc commence a me![]()
Que pensez-vous de ça ? Trouvé sur le net
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #define rotr(x,n) (((x) >> ((int)(n))) | ((x) << (32 - (int)(n)))) #define rotl(x,n) (((x) << ((int)(n))) | ((x) >> (32 - (int)(n))))![]()
Envoyé par KiLVaiDeN
Quelle est la difference avec ce que j'ai propose? A part bien sur les constantes magiques et l'utilisation de nombres signes pour des decalages, deux choses qui peuvent avoir des effets inattendus.
Et ce sont des macros evaluant deux fois leurs arguments. Autre source d'effets inattendus.
Ta version est plus propre c'est une certitude, mais si la personne doit faire énormément de rotations ( dans une boucle ) ça fera un appel de fonction à chaque fois ( enfin un call ) ?
La macro permet peut-être de gagner en vitesse non ?
Merci beaucoup a tous!
Je crois que je vais utiliser la macro, c'est simple et ca marche
C'est pas que pour le plaisir des rotation, il y a aussi un alogorithme qui attend ...
Encore merci a vous tous![]()
La solution de Jean-Marc.Bourguet reste la plus propre cependant, et en la mettant "inline" tu auras des bonnes performancesEnvoyé par pierabobl
Un exemple de fonction inline..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #ifndef INLINE # if __GNUC__ # define INLINE extern inline # else # define INLINE inline # endif #endif INLINE int max(int a, int b) { return a > b ? a : b; }
De toute manière , un appel propre un fichier ASM sera plus rapide !
La solution ideale est la compilation conditionelle en c et ASM des differents processeur utilisés ( #define x86, arm ... ).
Nota : Comme cité precedement, il faut prendre avec pincettes l'asm en ligne (pas forcement plus rapide du au problèmes cités). Le mieux restera d'analyser son code en mode desassemblé après compil pour optimiser tout cela![]()
Partager