有一个char为16位、short也是16位的c环境是否合法

问题描述 投票:0回答:1

我正在尝试为一台非常奇怪的机器创建(tinyc 的新后端)c 编译器。它唯一的可寻址单元是 16 位字,即它不能在 8 位字节级别寻址。它的自然 int 大小也是 16。

据我所知,c 标准规定 char 必须至少为 8 位,short 必须至少为 16 位。但是没有任何内容说 sizeof(char) 不能 = sizeof(short)。

即使想到这样的系统也感觉很奇怪,我们对 ram 中的字符和短裤等都有如此强烈的心理模型。

我的替代方案是采用“正常”数据类型,并通过获取单词并将其切碎来模拟 8 位行为。我的问题是,没有移位或旋转指令,所以它会非常昂贵(甚至模拟右移一位,以便对一个字节进行字提取,需要至少 32 个指令,测试并设置每个指令)位,或向左长旋转)。感觉我的 100mhz fpga 将以 2mhz 运行

c language-lawyer
1个回答
0
投票
有一个 char 是 16 位、short 也是 16 位的 c 环境是否合法

是的。

© www.soinside.com 2019 - 2024. All rights reserved.