Search code examples
c++carchitecture

Exotic architectures the standards committees care about


I know that the C and C++ standards leave many aspects of the language implementation-defined just because if there was an architecture with other characteristics, a standard confirming compiler for that architecture would need to emulate those parts of the language, resulting in inefficient machine code.

Surely, 40 years ago every computer had its own unique specification. However, I don't know of any architectures used today where:

  • CHAR_BIT != 8
  • signed is not two's complement (I heard Java had problems with this one).
  • Floating point is not IEEE 754 compliant (Edit: I meant "not in IEEE 754 binary encoding").

The reason I'm asking is that I often explain to people that it's good that C++ doesn't mandate any other low-level aspects like fixed sized types. It's good because unlike 'other languages' it makes your code portable when used correctly (Edit: because it can be ported to more architectures without requiring emulation of low-level aspects of the machine, like e.g. two's complement arithmetic on sign+magnitude architecture). But I feel bad that I cannot point to any specific architecture myself.

So the question is: what architectures exhibit the above properties?

uint*_ts are optional.


Solution

  • Take a look at this one

    Unisys ClearPath Dorado Servers

    offering backward compatibility for people who have not yet migrated all their Univac software.

    Key points:

    • 36-bit words
    • CHAR_BIT == 9
    • one's complement
    • 72-bit non-IEEE floating point
    • separate address space for code and data
    • word-addressed
    • no dedicated stack pointer

    Don't know if they offer a C++ compiler though, but they could.


    And now a link to a recent edition of their C manual has surfaced:

    Unisys C Compiler Programming Reference Manual

    Section 4.5 has a table of data types with 9, 18, 36, and 72 bits.

    size and range of data types in USC C compiler