C _ jak rozepsat ?__ádek

Jan Waclawek konfera na efton.sk
Neděle Duben 28 13:27:38 CEST 2013


> Ten příklad nebyl jen akademická úvaha. Typicky je to potřeba při
> parsování nějakého protokolu při přenosu dat mezi PC a tím malým
> procesůrkem. Očekával bych zde chování podle bodu 2. vašeho výčtu, na
> i386 a x86-64 se to tak chová. Body 3. 4. jsou špatně, nebudu bádat nad
> tím, proč.

Co je na tom "spatne"? Je to proste tak, a je to kvoli jednoduchsej logike, citaj lacnejsie a rychlejsie za cenu toho, ze uzivatel musi mysliet.

> Ale dle mého skromného názoru by se
> s tím měl překladač vypořádat podle 1. nebo když to nejde tak 2.

To nie je vec prekladaca ale architektury procesora.

Ta citovana polozka z normy dovoluje prekladacu optimalizovat na rychlost aj programovu pamat aj za cenu chyby vo vykonavani pri nezarovnanom pristupe; ergo je psia povinnost programatora sa o zarovnanie starat.

Samozrejme, prekladac moze ist nad ramec normy - konkretne u gcc, kedze je open source, mate uplnu volnost tuto vlastnost tam doimplementovat (ak tam uz nahodou nie je v ramci nejakych zahadnych prepinacov a atributov, ako som pisal); ale pocitajte s neprenositelnostou.

> Pouze to beru na vědomí s tím, že použiju memcpy()

To tiez nie je spravne; memcpy() s nezarovnanym pointrom moze a nemusi fungovat. Napriklad v Keili nefunguje, a je to podla normy uplne spravne. Problem je uz totiz v tom nezarovnanom pointri.

Ved som Vam napisal, ako je to spravne (skladat pomocou nasobenia a scitania), tak preco sa storcujete?

> Ještě tak na to mít čas [citat navod].

A na experimentovanie s tym, ze co zafunguje v ktorom konkretnom pripade, na to mate cas? Pripadne na hladanie zahadnych chyb typu "u mna to funguje a u zakaznika nie" (lebo nahodou tam po sieti prisiel balik kde nahodou vysiel word na nezarovnanu adresu, napriklad), na to tiez mate cas?

> A kdybych si ten návod přečetl, nepokládal bych hloupé
> otázky a neměli bychom o čem drbat. 

Ja som navod cital (i ked mozno nie az tak velmi dokladne ako by sa len dal), a vzdy mam o com kecat. Sediva je teoria, zeleny strom zivota... :-)

> Možná že z takovéto diskuze bude mít
> někdo i nějaký užitek.

Ved preto odpovedam, inak by som sa na Vas vykaslal ;-)

wek


Další informace o konferenci Hw-list