kUfa : ah oui, je me suis mal exprimé, ce n´est pas ce que je voulais dire. Si tu colles tes données à la main avec décalage, tu assures l´ordre que tu veux, alors que si justement tu castes, l´arrangement mémoire va dépendre de LE ou BE : donc tu restes consistant et cohérent vis-à-vis du systeme en vigueur ; c´est ça que je voulais préciser. En LE tes données seront LE, en BE elles seront BE ; si tu fais ta tambouille à la main, ben... faut bien lire la recette pour pas se tromper ; )
pour ce qui est de la rapidité, un cast ( de pointeurs...) se traduit au niveau du code ASM généré par un simple changement de mode d´adressage, soit à coup de BYTE/WORD/DWORD PTR en spécification de l´opérande, soit à coup d´adressage basé + indexe explicite ; ce qui ne consomme donc RIEN en terme CPU, si ce n´est éventuellement un alignement. Donc je vois mal comment en faisant de SHL à la main tu peux concurrencer ça.
Exemple bidon qui cumule les deux :
int array[1];
- (reinterpret_cast<char *>(array) + 1) = 1;
devient betement :
mov byte ptr [ebp-7],1
Au mieux comme je disais, à coup de SHL consécutifs sur une meme opérande, tu bloques le parallelisme U/V ; donc soit t´intercales tes instructions, et là faut y´a aller en ASM pour etre sur du résultat, soit tu complexifies un peu le code... Mais je vois pas du tout où on peut gagner :-?