我试图用最简单的方式用C定义4位、20位、24位和36位无符号整数。
bitfiels
发布于 2022-03-23 11:39:27
假设你在以下问题的评论中所说的话,你面临着几个问题:
在CPU仿真中,
uint4_t,您需要一个uint8_t,uint20_t需要一个uint32_t。然后,在发生下流/溢出的情况下,您将在纯C中设置模拟的CPU标志accordingly.bool数组(8位)。因此,在内部,您的uint4_t将成为一个char[4],因此您可以访问单个位,并将其作为单个元素进行操作。但是对于uint36_t来说,它的使用将非常“有趣”,您将在主机上面临其他一些问题,比如缓存经常失效和对齐问题。而且您需要为这些类型编写所有基本操作,无论如何,您将无法依赖C操作(与使用上面最短的类型时不一样,请参阅第一点)。CPU仿真不是一件容易的事情,试图比较仿真CPU和另一个仿真CPU的性能通常是完全不相关的。这在某种程度上是可能的,因为您尝试比较同一CPU的变体,但您需要一位优秀的硬件工程师在尝试做任何其他操作之前,为所有模拟指令提供所有的执行时间。
https://stackoverflow.com/questions/71585639
复制相似问题