我正在考虑一个非常具体的(现在无用的)处理器,称为saturn http://en.wikipedia.org/wiki/HP_Saturn_%28microprocessor%29.
该CPU的一个奇怪的特点是它的元素单位是半字节(4位),而不是字节(8位)。这不仅仅是装饰性的,任何指针值都以半字节表示。
有一次尝试为 Saturn 创建 C 编译器:hp48xgcc http://hp48xgcc.sourceforge.net/
看着它的文档 http://hp48xgcc.sourceforge.net/hp48xgcc.htm,我注意到它的基本类型遵循通常的 GCC 约定,具有 char 8 位。此时,我想知道:
CHAR_BIT的目的不就是提供元素单元的大小吗?
这似乎是在暗示GCC 自己的文档 http://www.gnu.org/software/libc/manual/html_node/Width-of-Type.html :
You can compute the number of bits in any data type like this:
sizeof (type) * CHAR_BIT
在这种情况下,考虑到Saturn架构,CHAR_BIT = 4会更好
或者我误解了 CHAR_BIT 的含义?
编号 根据C99标准CHAR_BIT 最小值为 8(顺便说一句,对于 C89/90 也是如此)。
C99标准草案(WG14/N1256)的相关部分如下:
5.2.4.2.1 整数类型的大小
下面给出的值应替换为适合在 #if 中使用的常量表达式
预处理指令。此外,除了 CHAR_BIT 和 MB_LEN_MAX 之外,
以下应替换为与 a 具有相同类型的表达式
表达式是根据整数转换的相应类型的对象
促销活动。它们的实现定义值的大小应相等或更大
(绝对值)与所示的值相同,符号相同。
— 非位字段的最小对象的位数(字节)
CHAR_BIT 8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)