Salut,
histoire de tenter de maximiser la vitesse de cette charmante fonction
(qui, si elle est utilisée, l'est probablement à des cadences
élévées...).
>>>>> "Edgar" == Edgar Bonet Orozco <edgar@???>
>>>>> writes:
[...]
Edgar> Pour traduire entre gros boutiste et petit boutiste sur Intel, tu peux
Edgar> utiliser les fonctions htons() et compagnie (host byte order = petit
Edgar> boutiste sur Intel, network byte order = gros boutiste). Tu peux aussi
Edgar> inverser les octets à la main, comme dans
Edgar> short inverse_short(short x)
Edgar> {
Edgar> return x<<8 & 0xff00 | x>>8 & 0xff;
Edgar> }
Edgar> Tu peux aussi faire un inline ou un #define.
1) Si x est un vrai short comme je l'entends (16 bits signés), le
"x>>8 & 0xff" peut-etre replacé par un "x>>8" tout simple. Je ne
suis pas sûr qu'un compilo touve celà tout seul.
2) Je suppose qu'une opération -- si simple soit-elle (comme le
chargement d'un registre depuis la mémoire, ou le ET bit-à-bit) --
est plus rapide sur un octet que sur un short. Je suggère donc "(x
& 0xff) << 8" en lieu et place de "x<<8 & 0xff00".
3) Simple remarque de codeur: Je suis surpris que le compilo ne
s'insurge pas à la lecture d'une expréssion comportant somme toute
pas mal d'opérateurs, pour bien peu de parenthèses...
Commentaires ?
A+.
Fix.
--
Fix & Cathy KOWALSKI mailto:ayoul@club-internet.fr
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Too many people are thinking of security instead of opportunity. They
seem more afraid of life than death. -- James F. Byrnes