avr-gcc; sbi, cbi deprecated
Marek Peca
marek@tynska.cuni.cz
Úterý Červenec 31 12:47:52 CEST 2007
> S tymto to ale nemoze vobec suvisiet. Je predsa jedno, ci napisem v
> kode:
>
> port &= ~(1 << (bit))
>
> alebo:
>
> #define cbi (port, bit) (port) &= ~(1 << (bit))
>
> cbi(port, bit)
>
> Ak to raz prekladac nevie prelozit ako asm instrukciu cbi, tak to
> neurobi v ani v jednom pripade.
To neni tak uplne pravda, nekdy muze byt vyhodne neco prelozit tak,
jindy jinak. Zalezi na kontextu (a u slozitejcich procesoru i na
obsahu pipeline atd., ale to neni pripad AVR).
> Ked viem, ze procesor ma instrukciu cbi a chcem mat istotu, ze ju
> pouzije, tak napisem
>
> asm volatile { cbi... };
To je sice moc prima, ale je to blbe. Jednak je to neprenositelne,
druhak to muze generovat blbejsi kod (zkuste pochopit princip
optimalizacni kompilace).
MP
Další informace o konferenci Hw-list