On Fri, Aug 19, 2016, at 21:09, Steve D'Aprano wrote: > Depends what you mean by "byte", but the short answer is "Yes". > > In the C/C++ standard, bytes must be at least eight bytes. As the below > FAQ > explains, that means that on machines like the PDP-10 a C++ compiler will > define bytes to be 32 bits.
I assume you mean 36, but I think this is mixing up two separate parts of the FAQ along with some theory discussion. AFAIK all historical C implementations for the PDP-10 and other 18- or 36-bit word systems have used the "9-bit bytes, and an extra offset member in char and void pointers if necessary" solution rather than the "word-sized byte" solution. In principle, I think a close reading of the standard would allow for an implementation can have 'skipped bits' as discussed there so long as there is no significance to the 'missing' bits in *any* type - so you could legally have 8-bit bytes on a PDP-10 so long as you also had 16-bit shorts, 32-bit long/pointer/float, and in general *never ever* broke the illusion that only the bits addressable via char pointers exist. Modern implementations aren't expected to expose ECC bits, after all. Such an implementation would probably be best done by ignoring the high bits of each word, which are easily masked off and often have no real use anyway in pointers (How many of these systems supported 2^36 words = 288 modern gigabytes of memory?), rather than by ignoring a single bit "between" each byte. AIUI many PDP-10 applications only used 18 bits for word pointers. -- https://mail.python.org/mailman/listinfo/python-list