
l'instruction suivante devrait donner :
unsigned long a;
unsigned char *p;
a |= (*p)<<8;
si a = 0 et *p = 1 -> a = 0 | 256 = 256
Une fois compilé celà me retourne des valeurs astronomiques, et en cherchant un peu,
je pense avoir compris que c'était que TIGCC utilisait un registre Ax pour la variable 'a' au lieu d'un registre Dx,
et que du fait de la particularité des registre Ax la lecture des datas était complété par des bits de poids fort à 1,
ce qui explique les valeurs astronomiques de la variable a.
Alors j'ai dû bidouiller la chose suivante :
a |= ((*p)<<8)&0xFF00;
Sur d'autres compilateurs d'autres plateformes 68k, il n'y a pas cet effet.
Quelqu'un a déjà eu le cas?