zahada delky struktury GCC

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pondělí Březen 11 20:45:26 CET 2024


Dekuji za vysvetleni, clovek se stale neco uci... to same se tyka i int64_t?

A kdyz budu mit

struct {
     uint8_t    a;
     uint8_t    b;
     uint16_t c;
     uint32_t d;
     doube    x;
}

tak to bude na jakych offsetech ? Zatim bych cekal 0, 1, 2, 4, 8

A to zarovnani na 8 se pak tyka cele struktury?

No budu to muset prozkoumat.

Dne 11.03.2024 v 20:33 Jan Waclawek napsal(a):
> Pri ne-packed strukturach je sposob usporiadania prvkov structu ciste na
> prekladaci. gcc nie je konkretny prekladac, a to zarovnanie zavisi od asi
> pol miliona faktorov - verzie, prepinacov pouzitych pri preklade gcc,
> prepinacov pouzitych pri preklade cieloveho programu, fazy mesiaca a jeho
> polohy voci Jupiteru a roznych inych divych svini pobehujucich naokolo.
>
> Nie zeby pre packed to bolo omnoho lepsie.
>
> V kazdom pripade som skusil nejaky nahodny gcc pre Cortex-M4 co s nim prave
> robim, a ano, zreprodukoval som to.
>
> Dovod je, ze ten double vnuti alignment 8 pre kazdy prvok pola, t.j. sa
> bude kazdy prvok zarovnavat na ofset delitelny bezo zvysku 8. 1020 taky
> nie je, takze za ten union sa pridaju 4 padding byty aby crc32 vyslo na
> offset 1024, no a on sam ma 4 byty a ze neho sa daju este dalsie 4 padding
> bity.
>
> Inaksie povedane, bez packingu to nevlozite s double tak, aby bolo to crc32
> na poslednych 4 bytoch. Da sa ba[] urobit dlhy 1016, a to crc proste bude
> 8 bytov od konca, t.j. to bude binarne nekompatibilne s tou verziou bez
> double.
>
> Ale inak je to takmer jedno, lebo aj tak su vsetky polia rozposuvane oproti
> tej verzii presne kvoli tomu zarovnaniu na 8 byte.
>
> wek
>
>
> ----- Original Message ---------------
>> union...
>> jde o to, ze potrebuju, aby struktura mela vzdy 1024B a CRC na konci,
>> dorovnava to ba a cekal jsem ze problem bude jen v pripade, kdyz se tam
>> funkcni polozky uz nevejdou...
> _______________________________________________
> 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