Remix.run Logo
▲ chasil 5 hours ago

"Some Honeywell machines, for example, had nine-bit bytes."

OS 2200 has 36-bit words. It is still a supported platform.

https://en.wikipedia.org/wiki/UNIVAC_1100/2200_series

This platform was the first SMP UNIX implementation:

"Any configuration supplied by Sperry, including multiprocessor ones, can run the UNIX system."

https://www.nokia.com/bell-labs/about/dennis-m-ritchie/other...

▲strenholme an hour ago | parent | next [-]

The last Unisys release, the Dorado from 2015 (ClearPath Dorado 8300 to be exact), used Xeon processors (which are 64-bit x86_64). But, for argument’s sake, let’s suppose there’s a Unisys 2200 out there with 36-bit registers and GCC/clang makes a C2y compiler for it.

If so, then said compiler should still have support for (u)int_8/16/32/64_t. Said compiler already needs to have that support with (unsigned) _BitInt(8/16/32/64)—and, yes, one can also have 36-bit ints on x86_64 in C23 with _BitInt(36) if one must—and allowing stuff like int32_t and uint32_t will allow said (imaginary) 2200 system to cleanly compile a lot of pre-C23 open source code out there. Yes, uint32_t will look a little ugly at the assembly level, just as _BitInt(36) will look a little ugly on, say, a Xeon processor, but the code will compile and run the same.

Of course, these days they can buy tokens so an agent can do any relevant porting, but still.

▲eru 5 hours ago | parent | prev [-]

> OS 2200 has 36-bit words. It is still a supported platform.

Yes, but that's perhaps an argument for 'implementation defined behaviour', not in favour of 'undefined behaviour'.