我正在考虑一个非常特殊的(现在无用的)处理器,称为saturn。
这个 CPU 的一个奇怪特性是它的元素单位是半字节(4 位),而不是字节(8 位)。它不仅仅是装饰性的,任何指针值都以半字节表示。
有一次尝试为 Saturn 创建 C 编译器:hp48xgcc
查看它的文档,我注意到它的基本类型遵循通常的 GCC 约定,字符为 8 位。这时,我想:难道CHAR_BIT的本意不就是提供元素单元的大小吗?GCC自己的文档似乎暗示了这一点:
You can compute the number of bits in any data type like this:
sizeof (type) * CHAR_BIT
在这种情况下,考虑到 Saturn 架构,最好让 CHAR_BIT = 4
还是我误解了 CHAR_BIT 的含义?