Salut. J'ai quelques questions sur le code qu'a poste Pollux :
void *src = ... à calculer ..., *dst = écran_virtuel;
int shift = ... à calculer ...;
unsigned long *src_even = src, *src_odd = src+2;
unsigned short *dst_ptr = dst;
while (nb_lines--) {
... calculer le nombre de mots à afficher ...
// La boucle interne :
do {
*dst_ptr++ = *src_even++ >> shift;
*dst_ptr++ = *src_odd++ >> shift;
} while (n--);
... ajuster les pointeurs pour la ligne suivante ...
}
1- j'ai rien trouve sur l'arithemetique des (void *), j'ai donc suppose que cela fonction comme un (char *) : le pas est de 1octet
2- src_even et scr_odd sont distants de 2 octets
3- un mot(word) machine fait 16 bits = 2 octets = sizeof(unsigned short) sur la TI, je ne comprends pas ceci :
le nombre de mot en les points (x0,y0) et (x1,y1) est : l = x1 - x0 + 1 ; n l / 16 + ( l % 16 != 0 );
la boucle interne do { ... } while() fait n iteration en avancant d'un mot a chaque iteration
alors que dst_ptr est depalce de 2 mot. Cela me semble etrange.
J'ai surement loope un truc , c'est pour cela que je comprends tout de travers.
D'ailleur l'astuce du decalage a droite m'echappent completement.
Tout ce que je vois c'est que vire de chaque long les
shift bits de droite.
je suppose que
shift represente le nombre de bits a copier dans le 1er mot.