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