avr-gcc; sbi, cbi deprecated

Miroslav Sinko sinkomiro@rocketmail.com
Úterý Červenec 31 12:56:04 CEST 2007


--- Marek Peca <marek@tynska.cuni.cz> wrote:

> > 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).

Nerozumiem.. preprocesor predsa vklada obsah makra do zdrojaku
(polopate napisane). Az potom to kompilator kompiluje. Ak je obsah
makra totozny s tym, co by som napisal do kodu rucne, tak je vstup do
kompilatora totozny. Alebo zijem cely cas v omyle?
 
> > 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,

No to mi je jasne, to som pisal ako protiklad k prvemu prikladu.

> druhak to muze generovat blbejsi kod (zkuste pochopit princip
> optimalizacni kompilace).

miro


       
____________________________________________________________________________________
Yahoo! oneSearch: Finally, mobile search 
that gives answers, not web links. 
http://mobile.yahoo.com/mobileweb/onesearch?refer=1ONXIC



Další informace o konferenci Hw-list