pole bitového pole v C

Miroslav Šinko sinkomiro na gmail.com
Neděle Leden 13 14:49:05 CET 2013


On 13.1.2013 11:23, Miroslav Draxal wrote:
> Výhody unionu pro mcu jsou v tom,  že dokážu různým způsobem přinutit
> kompilátor aby šetřil paměti.

Aha, potom OK.

> Pokud chci vynulavat cely byt SetBitPole.value=0; // přeloží jako clrf …
> SetBitPole.bits.SetClr=1; //přeloží jako bsf…
 > Pokud to mám jenom jako char, a chci nastavitb jeden bit, tak
 > automaticky používá
 > movlw 0x01000000
 > andwf SetBitPole,f

Tuto vyuzivate vyhody unionu, co mi pri volani funkcie chybalo.

> Ps. Celkovou „mou optimalizací“ zápisu C kódu jsem již ušetřil 0,5kB
> paměti a stále jsou v zápisu rezervy. Nesmějte se vy, co používáte
> dospělé MCU.

Nesmejem sa, len mi unikal zmysel. V praci vacsinou programujem pre PC, 
mame aj platformy ARM, ale je tam WinCE, kod musi byt prenositelny len 
prekompilovanim, takze nejaka optimalizacia na urovni kontorly asm 
nepripada do uvahy.
Teraz robime aj s 16-bitovymi Renesas H8 MCU. Obmedzuje nas skor velkost 
RAM, ako flash. Tu uz prichadza na rad optimalizacia, ale hlavne 
premennych, co si mozme dovolit dat ako globalne, ktore si ukroja z RAM 
len pre seba; co ako lokalne, ktore maju zase naroky na velkost 
zasobnika. Hlavne pri vacsich buffroch je to rozhodovanie tazke a 
nezaobide sa bez pokusov.

Doma sa hram (ked je cas) s AVR 8bit, tam ma sledovanie prekladu do asm 
doslova bavi. Konkterne pripad nastavenia celeho charu vs. 1 bitu gcc 
preklada rozumne. Ked moze, pouzije bitovy pristup, inac bytovy.

miro


Další informace o konferenci Hw-list