On 4 Aug 2008 at 14:15, Rich Alderson wrote:
It's not that the PDP-10 has "oddball
pointers", but rather that
"address" is not the same data type as "(byte) pointer". I assume
that
something similar is true on the CDC 6x00 family, but I haven't looked
at one since September, 1970, before I dropped the Compass programming
class at UT Austin.
I never used C on a 6600 (or any other CDC machine for that matter),
but yeah, the addressing granularity is a 60-bit word. Oddly, that
didn't seem to affect the efficiency of languages such as COBOL that
rely heavily on character data. In fact, COBOL on a 6600 was one of
the fastest implementations of any machine of the time. Character
move loops for example, were typically coded (except by "brain dead"
programmers) to move 10 characters per loop pass--and duplexed load
units made it easy to write an in-stack loop where an instruction
issued every cycle and memory was kept busy.
I have no idea how the implementors of 6000-series C decided to
fashion their character pointers. I can well imagine that they were
"weird".
But byte (whatever you want to call a byte) addressability is just an
artificial convenience anyway if your CPU has a wider datapath than a
byte. The CDC STAR, for example, had bit addressability.
Cheers,
Chuck