tigcc ait exactement écrit ce que tu as mis. Il a plutôt mis ça, non ? movea.w d0,a1
move.l a1,(a0)
Mouais en fait, ça m'étonnerait que Et en effet, l'instruction
movea (ou
move vers un reg d'adresses - c'est pareil) affecte le mot long entier de destination, ce qui ne signifie pas que le MSW (WORD le plus significatif) soit mis à 0. Sa valeur (0 ou FFFF) dépendra du MSB de d0.w.
t.l d0
move.l d0,(a0)
En gros, ça revient à faire : exSauf que ça utilise un registre en plus
Mais comme d0 contient le résultat d'un
muls, ses 32 bits sont affectés, donc le
ext est inutile, tu devrais essayer avec des transtypages de faire en sorte que GCC te génère un meilleur code.
Ou mieux, si tu as besoin d'une telle précision dans la qualité du code, tu essaies de réfléchir un peu par toi même et tu codes toi même en ASM.