1

Bon voila.
J'ai deux variables :
char *file; // un gros tableau (une variable en fait :-))
unsigned short var;

Et je veut copier les valeurs. Alors je fait ça :
var = *(unsigned short *)file;
Le problème, c'est que ça marche nickel, sauf si la valeur à copier est 0, auquel cas, ma TI crashe magnifiquement !
Je peux régler le problème en faisant ça :
memcpy (&var, file, 2);
Mais je voudrais comprendre ou est le problème avec la première méthode !!
Z'aurais pas une idée ?
Mon site perso : http://www.xwing.info

2

Voici encore un avantage de connaître l'ASM quand on prog en C : on ne peut pas copier autre chose que des octets, depuis ou vers des adresses impaires.

=> Ce n'est pas le fait que *(unsigned short *)file soit égal à zéro qui fasse planter, c'est le fait que file pointe vers une adresse impaire.
[edit]Edité par Thibaut le 08-04-2002 à 11:47:53[/edit]
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

3

Merci du tuyau !
C'est un truc à retenir.
Mon site perso : http://www.xwing.info

4

et comment savoir si l'adresse est paire ou impaire ?confus
avatar
納 豆パワー!
I becamed a natto!!!1!one!

5

roll

if((long)addr&1)l'adresse est impaire

mais faut gerer ça ds ton algo
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

6

Apparament, TIGCC n'attribue que des adresses paires (je dis ça parce que ça m'a jamais posé de prob). Par contre, tu rencontre des adresses impaires en faisant ça : "adr+1", ou des trucs du style, comme "adr+=1; adr = &machin", et la ça peut planter, si c'est pas des char.
Mon site perso : http://www.xwing.info