machines with oddball char * formats

Griff Smith ggs at ulysses.UUCP
Tue Nov 18 23:42:31 AEST 1986


> Although I don't know the details, from what I have heard the DEC-20 suffers
> from a similar problem.

Suffers is a strong word, and it wasn't a problem.  Remember, the machine
was around years before C was invented.  I think you are saying that any
machine that punishes violation of strict pointer typing is broken.

> Wordsize is 36 bits, I think all pointers are 18-bits
> and chars can not be packed to have a pointer to them.

If this is true, you are talking about a brain-damaged C compiler.   A
pointer can be 18 bits, but REAL pointers are 36 bits and they can
point to any arbitrary byte in a word.

Probably the most unfortunate feature of the pointer structure is that
it doesn't happen to fit accepted C coding idioms.  The hardware works
best if a byte copy loop is written as

	while (*++op = +++ip);

when we all know that the "correct" (i.e. VAX order) way to do it is

	while (*op++ = +ip++);

What does all this prove about the "goodness" or "badness" of the
machine?  Nothing!  It was a clean, RISK-like architecture that was a
joy to program.  But people don't program in assembly much any more and
the idioms for the machine don't happen to map into ones that are
favored in current high-level languages.  The machine was a victim
of culture drift.

Perhaps we should be taking courses in the history of design, with proper
attention given to the cultural forces that lead to design decisions.
-- 

Griff Smith	AT&T (Bell Laboratories), Murray Hill
Phone:		(201) 582-7736
UUCP:		{allegra|ihnp4}!ulysses!ggs
Internet:	ggs at ulysses.uucp



More information about the Comp.lang.c mailing list