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