决定字节大小的是编译器还是CPU
who decides the size of a byte, is it the Compiler or the CPU?
我知道字节是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
的外部世界接口。
相关文章:
- C/C++编译器通常会删除重复的库吗
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- Win32编译器选项和内存分配
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++,我收到一个无法理解的编译器错误
- 在线编译器中的分段C++没有打印消息
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 我需要知道编译器如何在cpp中使用析构函数
- 编译器如何区分std::vector的构造函数
- CLANG 编译器 说:变量"PTR"可能未初始化
- C 编译器如何知道正在使用哪种CPU体系结构
- 编译器或 CPU 中的 64 位溢出错误
- 是否使用 Guard 类免受编译器优化和 CPU 重新排序的影响
- 编译器是如何知道我的CPU的指令集的
- 决定字节大小的是编译器还是CPU