Partage
  • Partager sur Facebook
  • Partager sur Twitter

Alignement de tableau de char sur 8 bits (80186)

directives de preprocessing

    16 mars 2023 à 10:46:36

    Bonjour,

    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.

    Est-ce que quelqu'un aurait une idée?

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      16 mars 2023 à 11:03:20

      Salut,

      Un tableau de char qui prend 16 bits par données ?

      Sur les vieux processeurs dont tu parles, normalement les char font 8 bits. Si tu demandes un sizeof(char), qu'obtiens tu ?

      Comment est défini ce tableau ? 

      Comment en as tu déduit que ça cramait 16 bits par données ?

      Peux tu nous montrer un bout de code ?

      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        16 mars 2023 à 18:10:19

        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

        • Partager sur Facebook
        • Partager sur Twitter

        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.
        • Editeur
        • Markdown