Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.std.c > #1757

Re: null pointer constant, address constant

From Shao Miller <sha0.miller@gmail.com>
Newsgroups comp.std.c
Subject Re: null pointer constant, address constant
Date 2012-12-18 19:51 -0500
Organization A noiseless patient Spider
Message-ID <kar326$ehc$1@dont-email.me> (permalink)
References (1 earlier) <kaq01g$6jp$1@dont-email.me> <kaqibr$gj3$1@speranza.aioe.org> <kaqmd8$u9m$1@dont-email.me> <lnzk1ark9h.fsf@nuthaus.mib.org> <kar0q1$3au$1@dont-email.me>

Show all headers | View raw


On 12/18/2012 19:12, Shao Miller wrote:
> On 12/18/2012 18:52, Keith Thompson wrote:
>
>> There are myriads of other possible implementations where `(char*)zero`
>> does not yield a null pointer.  All one really needs to know is that the
>> standard doesn't define the behavior; concrete (but hypothetical)
>> examples can be useful in understanding why the standard does or does
>> not make certain guarantees.
>>
>>> On x86 with BIOS, physical address 0 would be the first byte of the
>>> Interrupt Vector Table.  If we wish to allow access to this as an
>>> object, then surely we would want to distinguish that object from a null
>>> pointer, which oughtn't to point to any object.
>>
>> A program that dereferences physical address 0 (which, BTW, is typically
>> impossible in hosted implementations with virtual memory) most likely
>> has undefined behavior.  It's perfectly valid for the result of that
>> undefined behavior to be that it accesses the Interrupt Vector Table.
>>
>> [...]
>>
>
> Agreed.  My "surely" was intended to suggest a possible reason for _why_
> the Standard makes it implementation-defined.  In free-standing
> boot-loaders like Syslinux, it's really rather useful for the undefined
> behaviour of _using_ a null pointer (even when constructed directly with
> a null pointer constant) to happen to do what you might desire on x86
> with BIOS*.
>

In case it's as clear as mud (a gift, to be sure), I was trying to 
simultaneously support:

1. An x86 with BIOS implementation _might_ wish to be able to 
distinguish a null pointer from "physical address 0", à la your 0xFFFFFFFF.

2. An x86 with BIOS implementation _might_ wish to be able to _use_ a 
null pointer without crashing, à la accessing the IVT.

Both of these are supported by having null pointer constants produce 
null pointers, and non-zero integer constants and non-constant integers 
cast to pointers having implementation-defined results.

- Shao Miller

Back to comp.std.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

null pointer constant, address constant Szabolcs Nagy <nsz@port70.net> - 2012-12-18 13:25 +0000
  Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2012-12-18 09:53 -0500
    Re: null pointer constant, address constant Szabolcs Nagy <nsz@port70.net> - 2012-12-18 20:06 +0000
      Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2012-12-18 15:39 -0500
        Re: null pointer constant, address constant Szabolcs Nagy <nsz@port70.net> - 2012-12-19 00:44 +0000
          Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2012-12-18 20:24 -0500
            Re: null pointer constant, address constant Szabolcs Nagy <nsz@port70.net> - 2012-12-19 10:27 +0000
              Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2012-12-19 07:15 -0500
              Re: null pointer constant, address constant Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2012-12-21 03:03 +0200
                Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2012-12-21 12:13 -0500
                Re: null pointer constant, address constant Szabolcs Nagy <nsz@port70.net> - 2013-01-09 00:44 +0000
                Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2013-01-08 20:21 -0500
                Re: null pointer constant, address constant Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-01-08 20:46 -0500
          Re: null pointer constant, address constant Shao Miller <sha0.miller@gmail.com> - 2012-12-18 20:37 -0500
      Re: null pointer constant, address constant Shao Miller <sha0.miller@gmail.com> - 2012-12-18 16:15 -0500
        Re: null pointer constant, address constant Keith Thompson <kst-u@mib.org> - 2012-12-18 15:52 -0800
          Re: null pointer constant, address constant Shao Miller <sha0.miller@gmail.com> - 2012-12-18 19:12 -0500
            Re: null pointer constant, address constant Shao Miller <sha0.miller@gmail.com> - 2012-12-18 19:51 -0500
          Re: null pointer constant, address constant Keith Thompson <kst-u@mib.org> - 2012-12-18 17:02 -0800
          Re: null pointer constant, address constant "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2012-12-20 05:34 -0800
            Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2012-12-20 10:33 -0500
              Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2012-12-20 12:28 -0500
                Re: null pointer constant, address constant Tim Rentsch <txr@alumni.caltech.edu> - 2012-12-20 21:13 -0800
              Re: null pointer constant, address constant Tim Rentsch <txr@alumni.caltech.edu> - 2012-12-20 21:05 -0800
            Re: null pointer constant, address constant Shao Miller <sha0.miller@gmail.com> - 2012-12-20 12:17 -0500
            Re: null pointer constant, address constant Keith Thompson <kst-u@mib.org> - 2012-12-20 12:10 -0800
              Re: null pointer constant, address constant Tim Rentsch <txr@alumni.caltech.edu> - 2012-12-20 21:25 -0800
  Re: null pointer constant, address constant Shao Miller <sha0.miller@gmail.com> - 2012-12-18 14:02 -0500
    Re: null pointer constant, address constant Szabolcs Nagy <nsz@port70.net> - 2012-12-18 20:09 +0000
      Re: null pointer constant, address constant James Kuyper <jameskuyper@verizon.net> - 2012-12-18 15:54 -0500
        Re: null pointer constant, address constant Shao Miller <sha0.miller@gmail.com> - 2012-12-18 16:18 -0500

csiph-web