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