处理器架构 32位和64位

处理器架构 32位和64位

我对 32 位和 64 位系统的处理器架构有疑问。

当您使用 64 位系统时,我认为这意味着您拥有一个 64 位宽的字节可寻址内存地址总线和 CPU 本身中的 64 位宽寄存器。

其中一个寄存器是指令寄存器,用于保存当前执行的指令。该寄存器也是 64 位宽。

我的问题是

64 位宽的指令如何能够包含对 64 位地址的引用,并将其加载到 CPU 的寄存器中?指令寄存器只有 64 位宽,因此不再有操作码的位置了?

另外,当内存地址指的是内存的一个字节(最大整数为 2^8 - 1)时,如何表达 64 位整数?

当 ALU 将 2 个 64 位整数相加,而结果无法用 64 位整数表示时,它会做什么?

答案1

64 位宽的指令如何可以包含对 64 位地址的引用以将其加载到 CPU 的寄存器中?

当我进行汇编编程时,通常一条指令会进入与包含其他数据(如内存地址)的寄存器不同的内存(不同的寄存器)。

指令寄存器只有 64 位宽,所以没有地方存放操作码了?

通常,完整的汇编指令类似于:“ADD AX,BX”。(具体细节可能因所使用的汇编程序而异。)在这种情况下,CPU 将获取 AX 寄存器的值,将其添加到 BX 寄存器的值,然后存储结果。例如,如果 AX 存储 2,而 BX 存储 7,则结果可能是 AX 存储 9。(这是 16 位:对于 64 位,您可能使用 RAX 而不仅仅是 AX。)

另外,当内存地址指的是内存的一个字节(最大整数为 2^8 - 1)时,如何表达 64 位整数?

内存地址,就像房子所在的物理地址一样,仅指内存的位置。64 位整数不会完全存储在 1 个字节中;那将占用 8 个字节。

当 ALU 将 2 个 64 位整数相加,而结果无法用 64 位整数表示时,它会做什么?

它只是将结果存储在它认为可用的 64 位内。但是,它还会翻转“溢出”标志。程序员可以检查“溢出”标志是否被翻转,并意识到结果超出了 64 位,因此结果没有完全存储在寄存器中。

相关内容