我了解到字长是 ISA 的一项功能,必须在硬件和软件中都实现。我对答案只有一个模糊的想法。我需要更正或确认。字长是否成为 CPU 中通用寄存器的大小?对于编译器,字长是否变成了“int”的大小(只是普通的 int,不是长或短)?
3 回答
字长是系统本机处理的位数。现在常见的版本是 32 位字和 64 位字。
例如,一个字节可以包含 0-255 之间的数字。但是,32 位整数是从 0 到 4,294,967,295。整数是系统的本机“字长”,因此在 32 位系统中为 4 字节宽,因此比 0-255 大得多。
事实上,在许多系统/编译器/等中。小于系统本机字长的类型被转换为该字长只是因为它比尝试将多个值放入单个字更有效。例如,布尔值可以由单个位表示。但是,如果您编写一个使用 32 个布尔值的软件,它不会将它们全部压缩成一个单词。当它在金属上运行时,每个都会被分配自己的单词。
我冒昧地将这个问题解释为 C 或 C++ 计算机上的整数大小。在这种情况下,此链接将有所帮助 - int 的大小是否取决于编译器和/或处理器?. 但是,如果从字面上阅读它,那么 CPU 字的大小应该是其寄存器的大小。
硬件实现:字长是CPU一次获取的字节数,也可以称为机器的自然大小。尽管计算机没有任何自然之处。它也成为实现中 CPU 寄存器的大小,因为它需要寄存器来存储它获取的内容。话虽如此,可以使用更大的寄存器来进行存储。IA-32 软件(字长 32 位)可以在 x86-64(字长 64 位)上运行。软件实现:字长变成'int'的大小(只是普通的int,不是long,short)