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é viml. 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