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>