OT arm-gcc hadanka
Jan Waclawek
konfera na efton.sk
Pondělí Prosinec 29 17:51:09 CET 2014
No, musim uznat, ze urcitu - aj ked podla mna este stale zvratenu - logiku
to ma, ale je to uz na rozhrani zdraveho rozumu a pravnictiny... ;-)
Dakujem za vysvetlenie.
wek
>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