决定字节大小的是编译器还是CPU

who decides the size of a byte, is it the Compiler or the CPU?

本文关键字:编译器 CPU 字节 决定      更新时间:2023-10-16

我知道字节是CPU最小的可寻址代码单元,所以x86-32机器中的字节大小是8位,但c++标准规定是sizeof(char)==1 bytes>=8 bits,所以我可以为x86-32计算机提供一个具有sizeof(char)==16 bits的编译器,这意味着字节是16位。

因此,在这个例子中,字节是关于CPU的8位,从编译器的角度来看,它是16位。那么字节的定义是什么,是什么决定了它的大小

编译器决定这一点。然而,在C和C++的情况下,出于性能原因,编译器通常跟随CPU。

在最小可寻址单元为16位宽的平台上,编译器可以实现8位char,但它必须(1)发出指令以从16位"字节"中获得8位单元,以及(2)每个char*void*都需要一个额外的位来指示下半部分/上半部分。

反之亦然,您可以在x86上使用16位char实现编译器,但这意味着所有C字符串占用的内存将是它们通常占用的内存的两倍,并且很难与使用8位char的外部世界接口。