On Tue, 6 Dec 2005, Chris Shoemaker wrote:

> > A pointer to a char is the same size as a pointer to an int and is the
> > same size as a pointer to void.  
> 
> This is not generally true for typed null pointers.  Implementations
> are free to use different representations for null pointers of
> different types.  This has in fact been done.  Using the null-pointer
> of the wrong type is not portable.  This is why David was right about
> (void*) being better than (char*) on the sentinel.

Pointers are generally the same size on byte-addressable machines like
i386 and ppc.  You run into trouble with old architectures and embedded
RISC.  

<old-timer>
My favorite old architecture was the DEC-20.  It had 36-bit words. C types:

char    9 bits
short   18 bits
int     36 bits
long    72 bits
float   36 bits
double  72 bits
char *  36 bits
short * 36 bits
int *   18 bits
long *  18 bits
int **  36 bits
char ** 36 bits
...

Most pointers were word pointers.  Char and short pointers used a special
subfield pointer extension that had its own load/store/inc/dec instructions.

I find it useful to ask myself whether the code would run properly on that
system when considering a portablity question.  Not that a DEC-20 would
be all that useful today.  2^18 * 36 bits = 2Meg * 9-bits byte addressable RAM.
The system I used in college had 256K words = 1M * 9-bit RAM.  If you
were lucky enough to be allowed to use the console, it had a memory mapped
graphics display, and the extended pointer format could also address individual
pixels!  The display was featured in my favorite "Flatland" fiction:
        _The_Planiverse_
        http://www.amazon.com/gp/product/0387989161/
</old-timer>

More relevant today are graphics processors (which I guess is a type of
embedded), which often have varying pointer sizes, including pointers
to bits and nybbles, to optimize bit pixel operations.

-- 
              Stuart D. Gathman <[EMAIL PROTECTED]>
    Business Management Systems Inc.  Phone: 703 591-0911 Fax: 703 591-6154
"Confutatis maledictis, flamis acribus addictis" - background song for
a Microsoft sponsored "Where do you want to go from here?" commercial.

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to