andoh_wilfried Le 19/03/2005 à 12:33Edité par andoh_wilfried le 20/03/2005 à 00:13 Bonjour.
Dans la Pseudo Librairie 'MyLiB', je veux pouvoir lire et écrire les bytes d'une variable à l'aide d'un pointeur quelconque c'est à dire char *, short *, long *.
J'ai vite compris qu'il y avait des contraintes de position au vu des crash subis.
Pouvez vous me dire exactement pour chacun des pointeurs, les contraintes .
Voici les intuitions que j'ai eu :
- Le char * peut se trouver à n'importe quel byte
- Le short * uniquement au byte paire
- Le long * uniquement aux bytes multiple de 4
Presque ^^
Quand tu fais une lecture/écriture en mémoire sur un 68000, un octet peut être lu/écrit à n'importe quelle adresse mais un word (16bits) ou un long (32 bits) doivent avoir pour adresse de base une adresse paire.
Après, le quand le C fait le l'arithmétique sur les pointeurs, il ajoute pour chaque incrément la taille en octets du type de pointeur au pointeur, et là ou aura bien des variations de 1 pour un char*, de 2 pour un short* et de 4 pour un long*.

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
> - Le *long uniquement aux bytes multiple de 4
Ca, c'est sur les RISC tels que l'ARM (et probablement bien d'autres). Ici, on a un CISC ancien. Le bus 16 bits tolère très bien les écritures de longs à des adresses multiples de 2, sans pénalité de temps comme sur les CISC modernes.
désolé ! je rectifie cette erreur. faut dire que je suis un peu fatigué par tout ce débogguage.
Merci à tous. je vais reéssayer. c'est actuellement la seule fonction qui fait crashé ma Librairie.