Path: csiph.com!eeepc.pasdenom.info!news.pasdenom.info!news.dougwise.org!gegeweb.org!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Alexander Terekhov Newsgroups: comp.programming.threads Subject: Re: forcing the compiler to reload from memory with c++0x Date: Wed, 02 Feb 2011 14:45:04 +0100 Organization: A noiseless patient Spider Lines: 38 Message-ID: <4D495FE0.ED8A251E@web.de> References: <4d3cee42$0$1209$426a74cc@news.free.fr> <1d21ad0a-db55-460e-aeb6-66f6d19369ea@i13g2000yqe.googlegroups.com> <4d3e2e3f$0$21517$426a34cc@news.free.fr> <4D40A4C7.16E6F9AE@web.de> <69d82db7-34be-4de7-86c4-2f39cc1e6df3@m13g2000yqb.googlegroups.com> <4d4221e9$0$17247$426a74cc@news.free.fr> <947b33d5-2509-4f0c-9256-a7c3de35578e@24g2000yqa.googlegroups.com> <87mxmlxxry.fsf@justsoftwaresolutions.co.uk> <87oc6yxdcw.fsf@justsoftwaresolutions.co.uk> <87sjw8w4b5.fsf@justsoftwaresolutions.co.uk> <4D480800.1C5132D7@web.de> <87k4hjx3ph.fsf@justsoftwaresolutions.co.uk> <4D482797.CBE41A86@web.de> <90c4d6f1-c539-4fdc-9b20-2cc6bc92dbe4@z20g2000yqe.googlegroups.com> <4D493C5C.83CA38C@web.de> Reply-To: terekhov@web.de Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Injection-Info: mx01.eternal-september.org; posting-host="3e4Fotn8NP3CUoQPJwS9VQ"; logging-data="1479"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+ZSZoXD2Xnux3rJHL2d/7k3SldmYvD/TM=" X-Mailer: Mozilla 4.77 [en] (Windows NT 5.0; U) X-Accept-Language: en Cancel-Lock: sha1:OarFZBn1blBV0Mnc1H4CQDgo92k= Xref: csiph.com comp.programming.threads:1789 Dmitriy Vyukov wrote: [...] > Alexander, you are inconsistent here. > Why can't printf() output go to nowhere on its own in the first place? > Abstract output is basically the same as abstract memory accesses on > abstract machine, no? And what is that abstract "standard output" > device or file? If we go down to that formal hair-splitting level, > then I believe we won't conclude anything useful. For example, is > there dynamic memory? Well, I'm not sure. Is zero bytes of dynamic > memory still dynamic memory? I guess it's nothing. > If you want, there is always an implementation. And it's possible to > loosely define such group of implementations as "sane industrial > implementations". And in that context volatile access indeed means the > most natural memory access instruction in generated code (MOV, LD or > whatever). And that is observable. And that is what Anthony meant, I > think. Stop abstracting into absurdity. "MOV, LD or whatever" are not externally observable in the case of int main() { volatile int i; // volatile write = has no observable effect i = 1; // volatile read = has no observable effect int n = i; } because the above program is the same as int main() { } for any reasonable observer of the outcome. regards, alexander.