如何在硬件和软件中实现ISA的字长?

时间:2011-02-27 17:22:08

标签: word cpu cpu-registers

我了解到字长是一种ISA功能,必须在硬件和软件中实现。我只是对答案有一个模糊的想法。我需要更正或确认。字长是否变为CPU中通用寄存器的大小?对于编译器,字长是否变为'int'(只是普通的int,不长或短)的大小?

3 个答案:

答案 0 :(得分:2)

word长度是系统本机处理的位数。现在的常见版本是32位字和64位字。

例如,一个字节可以保存0-255之间的数字。但是,32位整数是0-4,294,967,295。整数是系统的本机“字大小”,因此在32位系统中是4字节宽,因此比0-255大得多。

事实上,在许多系统/编译器/等中。小于系统本机字大小的类型转换为该字大小只是因为它比尝试将多个值放入单个字更有效。例如,布尔值可以由单个位表示。但是,如果你编写一个使用32个布尔值的软件,它就不会将它们全部压缩成一个单词。当它在金属上运行时,每个都将被分配自己的单词。

答案 1 :(得分:1)

我冒昧地将这个问题解释为C或C ++中计算机上整数的大小。在这种情况下,此链接将有所帮助 - Does the size of an int depend on the compiler and/or processor?。 但是,如果按字面意思读取,那么CPU的字大小应该是其寄存器的大小。

答案 2 :(得分:0)

硬件实现:字长是CPU一次获取的字节数,也可以称为机器的自然大小。虽然计算机没有任何自然之处。它也会在实现中成为CPU寄存器的大小,因为它需要寄存器来存储它所获取的内容。话虽如此,可以使用更大的寄存器来存储目的。 IA-32软件(字长为32位)可以在x86-64(字长为64位)上运行。 软件实现:word-length变为'int'的大小(只是普通的int,而不是long,short)