关于单词大小的这篇维基百科文章提供了不同计算机体系结构中单词大小的表。它有不同的列,如‘整数大小’,‘浮点大小’等等。我想,整数大小是ALU参数的大小,浮点大小是FPU参数的大小,地址分辨率单位是由单个地址表示的位/trits/位数。字大小是作为处理器使用的数据的自然大小(这仍然有点令人困惑)。
但我想知道,表中的char size列代表什么?理论上它是最小的物体大小吗?这是最小的排列可能吗?在字符大小的数据上定义的常见操作是什么?在x86,x86-64中,ARM架构字符大小为8位,与最小整数大小相同。但在其他一些体系结构中,字符大小为5/6/7位,这与该体系结构中的整数大小有很大不同。
发布于 2022-03-01 03:00:56
在现代C中,char保证可以独立修改,不会干扰周围的数据。它通常被选择为最窄的加载/存储指令的宽度。因此,在阿尔法或可寻址的CPU上,char必须是单词大小,否则每个char存储必须在包含的单词上编译为原子RMW。(在C11将线程感知的内存模型引入语言之前,比一些早期编译器实际使用的低得多的非原子RMW要便宜得多。)有关需求( 现代x86硬件不能将一个字节存储到内存中吗?和C11 place on char ),请参阅字符阵列上的C++存储模型及竞争条件 (一般涵盖现代ISAs )和C11。
但是,考虑到历史机器的大小,历史机器中的维基百科单词和字符大小表显然不是这样的。(例如,在一些可寻址的机器上,比一个字小,我很确定)。
它是关于软件(以及字符I/O硬件(如终端))如何将机器本机字符编码的多个字符(例如ASCII、EBCDIC或更早的某个子集)打包到机器单词中。
Unicode和可变长度的字符编码,如UTF-8和UTF-16,是与这一历史相比较的最新发明。encoding#History许多系统每字符使用少于8位,例如6 (64唯一编码)对于大写和小写拉丁字母加上一些特殊字符和控制码就足够了。
这些历史字符集促使编程语言选择使用某些特殊字符,因为它们是在具有特定字符集的系统上开发的。
历史机器确实做了一些事情,比如把3个字符的文字打包成一个18位的单词。
你可能想在https://retrocomputing.stackexchange.com/上搜索,甚至在做了更多的阅读之后,在那里问一个问题。
https://stackoverflow.com/questions/71297912
复制相似问题