3Fermer5
Lionel DebrouxLe 14/05/2009 à 17:02
Ce qu'il te dit, c'est de regarder ce que GCC produit quand tu compiles le code C que tu as posté wink

Non testé, cycles non évalués:
move.b (a2)+,d0
lsl.w #2,d0 | A * 4
add.b (a2)+,d0 | A * 4 + B
lsl.w #2,d0 | A * 16 + B * 4, si je ne suis pas trop bourré grin
add.b (a2)+,d0 | A * 16 + B * 4 + C; peut-être que le "+" n'est pas nécessaire, suivant comment tu lis le buffer.
andi.w #0x0FFF,d0
lsl.w #2,d0
lea 0(a6,d0.w),a1 | On peut n'utiliser que d0.w, parce que les deux instructions précédentes forcent le MSB sur 16 bits à 0.


[EDIT: nan, les add.b sont faux...]