je travaille sur un vieux projet, sur un 80186, sur lequel j'aimerais gagner un peu d'espace RAM.
Dans l'existant, je vois qu'il y a des tableaux de char qui, dans le mapping final, occupent 16 bits par donnée.
J'ai bien trouvé des directives du préprocesseur qui permettent de gérer l'alignement sur des structures, et qui me font gagner quelques octets, mais je voudrais savoir s'il est possible de "récupérer" les octets perdus entre chaque char.
La directive align avec une valeur 1 (8 bits) appliquée sur une structure ne "range" pas les octets à la queue leu leu en RAM.
L'adresse de départ du tableau est peut-être alignée sur une frontière de mot (16 bits sur x86), mais que chaque octet du tableau le soit, ça serait extrêmement étonnant.
Ca empêcherait en particulier de traiter une suite d'octets consécutifs en mémoire comme un tableau de char, ça serait franchement gênant pour les occupations typiques des programmeurs C...
- Edité par michelbillaud 16 mars 2023 à 18:10:56
Alignement de tableau de char sur 8 bits (80186)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html