Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ames!apple!claris!sts!octopus!pyramid!weitek!amdcad!light!bvs
From: bvs@light.uucp (Bakul Shah)
Newsgroups: comp.std.c
Subject: Re: Semi constant expressions
Keywords: observability, volatility, debugging, shared memory, Zen
Message-ID: <1989Sep6.160709.4890@light.uucp>
Date: 6 Sep 89 16:07:04 GMT
References: <1237@gmdzi.UUCP> <10885@smoke.BRL.MIL> <242@ssp1.idca.tds.philips.nl> <10937@smoke.BRL.MIL>
Reply-To: bvs@light.UUCP (Bakul Shah)
Organization: -
Lines: 27

In article <10937@smoke.BRL.MIL> gwyn@brl.arpa (Doug Gwyn) writes:
>  ...
>The run-time behavior of a C program is defined in terms of the operation
>of a "virtual machine" (with some deliberately fuzzy areas in its
>specification, so it's really a class of virtual machines) and input/output
>operations (which are usually what makes the program's behavior observable).
>A correct implementation must produce observable results identical to those
>that would be produced by the virtual machine (actually, by some member of
>the class of virtual machines).

I have some questions about `observable behavior'.  How does this
concept interact with `volatile' variables? with debuggers? with
shared memory?

Are volatile variables considered to be observable within their
scope at all times (or at sequence points)?  Is this mechanism
sufficient for indicating that an object is observable?

While debugging a piece of code I may want everything accessed from
it to be observable.  Should a compiler treat such variables as
volatile?

Is a program with *no* output of any kind observable?

Some discussion on this subject would be helpful.  Thanks

-- Bakul Shah <..!{ames,sun,ucbvax,uunet}!amdcad!light!bvs>