in the example you provided you *should* use volatiles.
otherwise the prg flow hangs.

You should not declare all vars as volatile.
There are some other ways to avoind unnecessary volatiles reads/writes.

~d

On Wednesday 23 October 2002 12:16, David Brown wrote:
> The answer is very simple - you *should* be pernickety about variables that
> you don't want optomised out.  The term "volatile" tells the compiler that
> a variable's value may change without it knowing about it, or have other
> side effects - thus the compiler must read or write it exactly as often as
> specified in the source code.  This is particularly important for variables
> that are changed (or read - it works both ways) within interrupt routines.
> It also applies to hardware registers, which are all effectively volatile
> in the header files.
>
> However, making all variables "volatile" by default would be using a cannon
> to swat a fly.  The resulting code would be poor, full of unnecessary reads
> and writes to memory and with the compiler unable to perform all its neat
> optomisation tricks.  Declare variables as volatile when necessary, but not
> otherwise.
>
> > I'm having a lot of trouble with the way GCC treats various objects. In
> > particular, if I want to pass falgs about in my program, unless I'm very
> > pernickety it optimeses them out, assuming they aren't wanted. For
> > example: (ticks is incremented by an interrupt)
> >
> > void wait_ticks( unsigned int nticks)
> > {
> > unsigned int t;
> >
> > t = ticks;
> >
> > while( (ticks-t) < nticks)
> >  ;
> > }
> >
> > If I don't declare ticks as volatile, I get this:
> >
> > 000047d4 <wait_ticks>:
> >     47d4: 0e 43             clr r14 ;
> >     47d6: 0e 9f             cmp r15, r14 ;
> >     47d8: fe 2b             jnc $-2      ;abs dst addr 0x47d6
> >     47da: 30 41             ret
> >
> > which just hangs.
> >
> > Is there any way of forcing the compiler to assume everything is
> > volatile? Why does it do this anyway?
> >
> > Paul Burke
> >
> >
> > -------------------------------------------------------
> > This sf.net emial is sponsored by: Influence the future
> > of Java(TM) technology. Join the Java Community
> > Process(SM) (JCP(SM)) program now.
>
> http://ad.doubleclick.net/clk;4699841;7576301;v?http://www.sun.com/javavote
>
> > _______________________________________________
> > Mspgcc-users mailing list
> > Mspgcc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
> -------------------------------------------------------
> This sf.net emial is sponsored by: Influence the future
> of Java(TM) technology. Join the Java Community
> Process(SM) (JCP(SM)) program now.
> http://ads.sourceforge.net/cgi-bin/redirect.pl?sunm0002en
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users

-- 
/********************************************************************
     ("`-''-/").___..--''"`-._     (\   Dimmy the Wild      UA1ACZ
      `6_ 6  )   `-.  (     ).`-.__.`)  Enterprise Information Sys 
      (_Y_.)'  ._   )  `._ `. ``-..-'   Nevsky prospekt,   20 / 44
    _..`--'_..-_/  /--'_.' ,'           Saint Petersburg,   Russia
   (il),-''  (li),'  ((!.-'             +7 (812)  3468202, 5585314
 ********************************************************************/


Reply via email to