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