OT arm-gcc hadanka
Miroslav Šinko
sinkomiro na gmail.com
Pondělí Prosinec 29 17:42:01 CET 2014
On 29.12.2014 17:20, Jan Waclawek wrote:
> No, je to naozaj tak, a obdivujem Tvoje znalosti, skumal som to pol dna.
"To je jenom takova skusenost, vite?" :-)
> Ale postrada to akukolvek logiku, teda podla mna; a to rovno v dvoch
> veciach:
>
> 1. Toto totiz nie je zarovnanie, ale trailing padding; t.j. to nie je
> doplnenie medzery PRED 32-bitovu premennu za ucelom jej umiestnenia na
> adresu delitelnu 4, ale doplnenie medzery ZA celu strukturu za ziadnym
> logickym ucelom.
No, trailing padding so zarovnanim suvisi tak, ze ak by si definoval
pole struktur/unionov, tak kazda dalsia polozka pola bude lezat na
zarovananej adrese. Normu teraz studovat nejdem, ci je to tam takto
presne uvedene, ale tak to mam v pamati :-)
To sa tyka v Tvojom pripade unionu. Nadradenej strukture si ale
predpisal packed, teda nechces, aby hned prvy (v Tvojom pripade jediny)
union lezal na zarovnanej adrese.
> 2. Naviac, tym, ze som predpisal "packed" strukture, hovorim prekladacu, ze
> chcem mat plnu kontrolu nad umiestnenim jednotlivych jeho poloziek,
To sedi. Pre vsetky polozky struktury, ktorej si zadefinoval packed, to
plati. Polozkami mozu byt aj struktury a uniony, ale vzdy chapane ako
celok nejako definovany. Nejako = podla vlastnych pravidiel.
> a
> nevidim absolutne ziadny dovod, aby ten predpis neplatil aj pre do neho
> vnorene zalezitosti. Ale neplati, treba mu to explicitne predpisat.
No, kazda struktura/union sa kompiluje zvlast, nezalezi na vnoreni,
nevnoreni. Nad zmyslom tohoto sa mozme dohadovat, ale zober si ten
priklad z dokumentacie, co poslal kolega Milan B. Ked je vnorena
struktura definovana mimo, tak sa musi kompilovat zvlast, so svojimi
pravidlami zarovnania, t.j. ak neurcis, tak default - nebude packed. Ak
potom tu strukturu pouzivas kdekolvek v projekte, musi byt pouzita
rovnako. T.j. aj ked ju vnoris do nejakej packed struktury, nemoze sa
pre toto pouzitie zmenit z unpacked na packed, to by sa nedali instancie
struktury tohto typu kdekade v projekte kopirovat medzi sebou. Preco to
rovnako plati aj pre vnorene struktury, ktore deklarujes priamo pri
vnoreni, to je uz len spekulacia, ale plati to rovnako a ja to chapem :-)
miro
> Je to podobne pre mna nepochopitelna a perverzna zalezitost ako dva druhy
> pakovania bitfieldov a ze prave ne-gnu je default v gcc v mingw.
>
> wek
>
Další informace o konferenci Hw-list