Bon, le
div généré est attendu en
-Os. Tu as écrit ça:
i= length / 4;
où
length est signé, un shift n'a pas la même sémantique pour les nombres signés qu'une division. Mets
length en non signé (
i peut rester signé) et tu n'auras pas ce problème (j'ai vérifié, ça donne bien un
lsr). Ou alors écris directement
>>2 et pas
/4 (mais si tu fais juste ça sans passer
length en
unsigned, ça fera que ton algo ne marchera pas pour les longeurs entre 32768 et 65535 (enfin, 65520, on ne peut pas avoir un bloc plus grand

)). Ou les deux.
Quant à ton histoire de
tst inutile pour la boucle, je ne peux pas la reproduire, avec TIGCC CVS HEAD et
-Os, j'ai:
subq.w #1,%d4
jbpl .L3