AVR-GCC a pointer na funkci

Petr Tomasek tomasek@etf.cuni.cz
Středa Leden 2 06:57:43 CET 2008


On Tue, Jan 01, 2008 at 02:06:53PM -0800, Miroslav Sinko wrote:
> Aha, takze beriem spat. GCC to prelozi spravne aj bez pgm_read.
> 
> No a teraz k povodnej otazke: ono sa to sprava presne, ako sa ma.
> Nechajme bokom, preco sa optimalizatoru zda, ze cyklus nie je potrebny,
> hlavne je, ze volatile problem riesi. Ibaze nie je volatile, ako
> volatile! Stavim sa, ze ste zapisali:
> 
> volatile void (*reply_gen)(void);
> 
> Toto ale nie je volatile smernik! Ale smernik na funkciu, ktora vracia
> volatile void, co je nezmysel. Preto tie warningy.
> 
> Skuste spravny zapis:
> 
> void (* volatile reply_gen)(void);
> 
> miro
> 
> PS: http://kcomputing.com/answers.html :-)
> 

To porad neresi ten problem, ze avr-gcc v kteresi ze sve 4.x verze
je buggy natolik, ze pri "optimalizaci" se vykasle na klicove
slovo "volatile". Me to napr. kod ve tvaru:

   PORTx|=(1<<Pxy);
   // neco mezi tim
   PORTx&=~(1<<Pxy);

"zoptimalizovalo" tak, ze prvni zapis na PORTx uplne vyhodilo! :(

P.T.

-- 
Petr Tomasek <http://www.etf.cuni.cz/~tomasek>
Jabber: butrus@jabbim.cz
SIP: butrus@ekiga.net



Další informace o konferenci Hw-list