Bonjour,
je suis en train d'implémenter le support des noms longs dans le système de fichier FAT pour mon OS maison et là je bute sur une somme de contrôle.
Suivant la doc trouvée ici : https://en.wikipedia.org/wiki/Design...le_system#VFAT il y a une somme de contrôle présente dans les descripteur de nom de fichier long et l'algo est décrit comme ceci :
Hélas je ne comprends pas ce qui se passe sur la ligne sum = ((sum & 1) << 7) + (sum >> 1) + *pFCBName++;, notamment les symboles avec les doubles chevrons.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 unsigned char lfn_checksum(const unsigned char *pFCBName) { int i; unsigned char sum = 0; for (i = 11; i; i--) sum = ((sum & 1) << 7) + (sum >> 1) + *pFCBName++; return sum; }
Pour le reste, je comprends bien qu'il s'agit d'une boucle repétée 11 fois avec la variable sum qui a été initialisée à zéro, mais ça ne m'amène pas à grand chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 mov cx,11 ;ch=sum cl=i boucle_chesum_vfat: ;que doit-je faire ici? dec cl jnz boucle_chesum_vfat
Partager