Re: Zaèáteènický dotaz na C - variant ve struktuøe

Jan Waclawek konfera na efton.sk
Čtvrtek Listopad 13 10:54:20 CET 2014


>Dle specifikace jazyka C není zaruèeno (implementaènì závislé), že pøekladaè u union ukládá jeho prvky do stejné 
>pamìové oblasti; union se mùže chovat stejnì jako struct a nebude to chyba (dle specifikace).

Tak, ako ste to napisali, to nie je pravda. C99, 6.7.2.1#14:
[...] A pointer to a union object, suitably converted, points to each of
its members [...]

Na druhej strane nie je normou zarucene, ze struct nebude mat medzi prvkami
medzery kvoli zarovnaniu; toto zarucuje to prekladacovo-specificky
atribut. Tie kniznice ku Cortexom (aj tie od ARMu v ramci CMSIS) su plne
podobnych nestandardnych prekladacovo-zavislych zalezitosti, nie je dovod
sa tomu branit. Detto endianita - vzhladom na to, ze sa jedna o popis
hardwarovych registrov konkretneho radu mcu s fixnou endianitou, je
vrcholne nepravdepodobne, ze by sa niektory prekladac rozhodol interne
pouzivat inu endianitu - technicky by to sice slo, ale je to totalny
nezmysel.

Motivacia ST bola uplne ina, a to urobit to rychlo a lacno, t.j. bez
ohladov na uzivatelov a zrejme aj bez konzultovania s uzivatelmi. Inak by
nemohli robit taketo pomerne elementarne chyby, na ktore sa stazuju 3 zo 4
uzivatelov tych mcu na nahodne vybranom fore... ;-)

wek



----- Original Message ---------------
>Jen tak pro formu, nechci rozpoutat vášnivou diskuzi o nièem.
>
>Firma STM to má vymyšlené ideologicky dobøe :-)
>
>Proè:
>• Dle specifikace jazyka C není zaruèeno (implementaènì závislé), že pøekladaè u union ukládá jeho prvky do stejné 
>pamìové oblasti; union se mùže chovat stejnì jako struct a nebude to chyba (dle specifikace).
>• Je  to konstrukce je závislá na endianitì.
>
>Vzhledem k tomu, že se to (zøejmì) bude pøekládat asi gcc na cortex-m, tak to zase není až tak dùležité, ale je dobré o 
>tom vìdìt - z hlediska normy je chování neurèité.
>
>Pokud je to obecná knihovna s výhledem do budoucna i na jiný pøekladaè/jádro (R,A), tak by bylo vhodné preprocesorem 
>kontrolovat zda-li jsou pøedpoklady splnìny,
>
>Je to podobné jako posun >> nebo << u znaménkových int. Taky èlovìk neví, co vlastnì dostane, pokud nezná cílovou 
>architekturu.
>
>ced
>
>
>Dne 12.11.2014 v 22:57 Petr Labaj napsal(a):
>> Dìkuji, to je pøesnì ono.   :-)
>>
>> PL
>>
>> ******************************
>>
>> From: "Miroslav Mraz" <mraz at seznam.cz>
>> To: "HW-news" <hw-list at list.hw.cz>
>> Sent: Wednesday, November 12, 2014 10:47 PM
>> Subject: Re: Zaèáteènický dotaz na C - variant ve struktuøe
>>
>>
>> A tak to jo. Toho už jsem si také všiml. Dá se, dokonce to funguje.
>>
>> http://mujweb.cz/mrazik/minimal/html/io_8h_source.html
>>
>> Mrazík
>>
>> Dne 12.11.2014 v 22:26 Petr Labaj napsal(a):
>>> Jestli vím co dìlam? Opravuji vymyšlenost firmy STM.
>>> Jejích definice:
>>> ...
>>



Daląí informace o konferenci Hw-list