我正在尝试为一台非常奇怪的机器创建(tinyc 的新后端)c 编译器。它唯一的可寻址单元是 16 位字,即它不能在 8 位字节级别寻址。它的自然 int 大小也是 16。
据我所知,c 标准规定 char 必须至少为 8 位,short 必须至少为 16 位。但是没有任何内容说 sizeof(char) 不能 = sizeof(short)。
即使想到这样的系统也感觉很奇怪,我们对 ram 中的字符和短裤等都有如此强烈的心理模型。
我的替代方案是采用“正常”数据类型,并通过获取单词并将其切碎来模拟 8 位行为。我的问题是,没有移位或旋转指令,所以它会非常昂贵(甚至模拟右移一位,以便对一个字节进行字提取,需要至少 32 个指令,测试并设置每个指令)位,或向左长旋转)。感觉我的 100mhz fpga 将以 2mhz 运行
是的。