On 6/28/20 4:20 PM, Peter Corlett via cctalk wrote:
On Sun, Jun 28, 2020 at 01:32:02PM -0700, Chuck Guzis
via cctalk wrote:
[...]
Why is byte-granularity in addressing a
necessity?
Because C's strings are broken by design and require one to be able to form a
pointer to individual characters.
That's not a barrier, as IIRC, the C standard doesn't call out a
specific format for pointers, other than that of NULL.
I know that there was a C for the CDC Cyber series, but I don't recall
the implementation details.
It's noteworthy that on the Univac 1100 series, a "byte" could be 6, 9
or 12 bits, but not 8. (36 bit words). The PDP-10 had similar issues,
such as the "packed" string format of 5 7-bit characters per word, with
one bit unused.
One wheeze is to just declare that bytes are the same
size as a
machine word. C
doesn't require char to be exactly 8 bits, but
merely at least 8 bits. However,
a lot of C code will break if char, short, int and long aren't exactly the same
size as they are on x86. Mind you, a lot of it is still broken even if they
are...
Who cares about x86? I suspect that there's a lot of x86 code out there
that assumes little-endian quantities as well.
If you want to run code written for the x86 platform, get an x86 system.
--Chuck