OT arm-gcc hadanka

Milan B. milan na bastl.sk
Pondělí Prosinec 29 17:36:15 CET 2014


On 29. 12. 2014 17:22, Miroslav Šinko wrote:
> Ja ten citat povazujem za OK, kazdy clen struktury/unionu lezi na 
> adrese, ktora minimalizuje miesto. To ale nic nehovori o tom, ze ak je 
> clenom dalsia (vnorena) struktura/union, ze to plati aj pre ich cleny. 
> V tom navode je hned aj priklad s vnorenou nezarovnanou strukturou, 
> kde je to aj presne takto vysvetlene.
>

Citat hovori, ze nasledujuce zapisy by mali byt ekvivalentne:

   typedef struct __attribute__((packed)) {
     uint16_t a;
     union  {
       uint32_t b;
       uint16_t c[3];
     };
   } TBar;

  typedef struct  {
     uint16_t a __attribute__((packed));
     union  {
       uint32_t b;
       uint16_t c[3];
     } __attribute__((packed));
   } TBar;

Nie su. Prvy ma, ako vieme, dlzku 10, druhy ma velkost 8. Priklad v 
dokumentacii sa trochu lisi v tom, ze vnorena struktura je definovana 
ako samostatny typ - tam ma istu logiku, ze sa nanho neaplikuju atributy.

Vo wekovom priklade je to trochu inak, tam by sa o tom diskutovat dalo.

-m-

> miro
>
> On 29.12.2014 17:06, Milan B. wrote:
>>
>>> Preco? TBar mas explicitne zarovnany na 1. Co nemas explicitne
>>> zarovnane je union, ten bude zarovnavany na 4B. Jeho velkost je dana
>>> vacsou polozkou, teda "uint16_t c[3]". 16-bit polozka sama osebe nema
>>> byt preco natahovana na 4B, teda velkost c[3] je 6B. Ale union ako
>>> celok MUSI byt doplneny paddingom na 4B zarovnanie, tu na 8B. No a v
>>> TBar to spolu s "uint16_t a" vyjde na 10B.
>>
>> Predpokladam, ze v tomto kvize ide o to, ze v dokumentacii sa pise:
>> "Specifying this attribute for |struct| and |union| types is equivalent
>> to specifying the |packed| attribute on each of the structure or union
>> members."... a ono to neplati pre vnorene struct/union, kazdy
>> struct/union musi mat svoje atributy - viz
>> https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html
>>
>> A v dalsom kole sa bude kydat na open source, jeho autorov a 
>> dokumentaciu...
>>
>> -m-
>>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list