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