Date: Wed, 12 Jan 2000 22:32:47 -0500 From: "Mikhail Evstiounin" <evstiounin@adelphia.net> To: "Mikhail Evstiounin" <evstiounin@adelphia.net>, <freebsd-questions@FreeBSD.ORG> Subject: Re: Volatile variables Message-ID: <00c801bf5d76$dcae5580$fc353018@evstiouninadelphia.net.pit.adelphia.net>
next in thread | raw e-mail | index | archive | help
-----Original Message----- From: Mikhail Evstiounin <evstiounin@adelphia.net> To: freebsd-questions@FreeBSD.ORG <freebsd-questions@FreeBSD.ORG> Date: Wednesday, January 12, 2000 10:02 PM Subject: Re: Volatile variables > >-----Original Message----- >From: Oliver Fromme <olli@dorifer.heim3.tu-clausthal.de> >To: freebsd-questions@FreeBSD.ORG <freebsd-questions@FreeBSD.ORG> >Date: Wednesday, January 12, 2000 9:47 PM >Subject: Re: Volatile variables > > >>Mikhail Evstiounin <evstiounin@adelphia.net> wrote in >list.freebsd-questions: >> > [...] >> > Like I told above it should be done in atomic way, but vilotale means - >> > avoid >> > optimiozations. >> >>"volatile" does not mean that the compiler should not optimize. >>It only means that the compiler must not make certain >>assumptions about a variable, and that its value may be read or > > >agreed, I wasn't clear, but again - back to standard - >"so that aggresive optimization must be avoided". > >>written asynchronously, i.e. its value might not be consistent > > >should add - in ways not specified by the language. You can chage a >global variable in different threads - asynchroniosly, you should >synchromize >access - you don't need vilotile here. > >>between statements. No more, no less. Of course, this >>inhibits certain types of optimizations, naturally. >> >> > And again it's a hint - just a hint. Some aggresive >> > optimizers >> > could ignore it. My error again - ignore is bad word, - can I say - use in a different way? >> >>No! A C compiler must not ignore the "volatile" qualifier. >>It's the compiler's job to make sure that the program is not >>working with a "stale" variable value. > > >I was not talking aboutt "ignore", I was talking about "hint", ehich >in my mind means - if you can provide protection, you can use >aggresive optimization. Your example still leaves variable >in a "stale" mode. And yes, it's a compiler to make sure that the >program works, but there are different ways. In my mind, it's pretty close >to register specifier - compiler will try to allocate variablue in a >registere, >but if there is not enough registers then compiler will allocate variable >in memory. It's still works, but not as fast as author wanted. The same is >with vilotile - if there is a way to provide an "atomic" way for some part >of code then compiler can use some pretty aggresive optimizations. > >> >> > For example, if commands cli/sti could be used by compiler >> > and works like it work in 8086, optimizer could do the following: >> >>Yeah, it could, but this is UNIX, not DOS. :) >> > >It doesn't matter, it was just an example, and BTW, you can configure >segments in a way when it would be true. And even in Unix world you can >use sigmask. > >>Regards >> Oliver >> >>-- >>Oliver Fromme, Leibnizstr. 18/61, 38678 Clausthal, Germany >>(Info: finger userinfo:olli@dorifer.heim3.tu-clausthal.de) >> >>"In jedem Stück Kohle wartet ein Diamant auf seine Geburt" >> (Terry Pratchett) >> >> >>To Unsubscribe: send mail to majordomo@FreeBSD.org >>with "unsubscribe freebsd-questions" in the body of the message > > > >To Unsubscribe: send mail to majordomo@FreeBSD.org >with "unsubscribe freebsd-questions" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?00c801bf5d76$dcae5580$fc353018>