[réslu]Dév OS4 : Struct pas alignés pareil !

3 sujets de 1 à 3 (sur un total de 3)

  • krabob

      #6610

      Salut, je suis en train d’utiliser mpega.library sur os4 là, et j’ai eu un probleme de compilation (pas grand chose): d’abord, dans le package de mpega.library, il y a juste le .fd pour se demerder sur os4, et un « .i » bizarre sensé etre pour os4, avec une interface os4, mais avec une syntaxe assembelur bizarre… bref, je me suis fait mon mpega.h special os4 avec la struct d’interface moi meme, a partir du package de dev os3 classique, ça marche niquel.là ou j’ai eu un probleme, c’est avec une des struct a passer: MPEGA_CTRL

      dans la version 68k originale il y a des structs dans la struct, genre:

      {WORD,{WORD,WORD,LONG}}

      en 68k, le premier WORDprend 2 oct, puis suit de suite la sous-struct ce qui fait que l’expression au dessus prend 10 octets. Avec le gcc du sdk os4, on *dirait* qu’on a des alignements différents pour le ppc, genre alignement sur 4 octets a chaque debut de structs, ce qui donne 12 octets pour la struct au dessus.

      Je me suis démerdé en remplaçant la declaration de struct par un tableau de word et ça marche 😮

      Alors voilà ma question: y a til un moyen de déclarer en C une struct en forçant le type d’alignement ? ou une option de compilation ?

      Fab1

        #107056

        Pour les includes système/libraries, on utilise généralement

        #pragma pack(2)

        définition des structures à aligner sur 2 octets

        #pragma pack()

        Tu devrais utiliser les outils de conversion fd/clib-> headers genre fd2pragma et cie qui font ça proprement pour tous les compilos/OS (sur MorphOS on a aussi un cvinclude.pl qui se charge de ça, il y a pt être qqch d’équivalent dans le sdk os4).

        krabob

          #107057

          ok merci ! effectivement, les includes os4 sont bourrés de:

          #ifdef __GNUC__

          #ifdef __PPC__

          #pragma pack(2)

          #endif

          #elif defined(__VBCC__)

          #pragma amiga-align

          #endif

          c’est tout ce qu’il manquait a mon.h… sinon effectivement, il y a un tool pour créer des kits de library, mais ça ne prend pas des .fd mais des .xml… et parait-il il existe un tool encore ailleurs pour créer des .xml a partir du .fd

        3 sujets de 1 à 3 (sur un total de 3)

        • Vous devez être connecté pour répondre à ce sujet.

        Forums AmigaOS, MorphOS et AROS Développement [réslu]Dév OS4 : Struct pas alignés pareil !

        Amiga Impact