2

通读以下指令表手册,我发现整数乘法通常要快得多8-bit registers

在普通桌面cpu的上下文中,是什么8-bit register意思?存储在 32 位寄存器中的值恰好在 8 位范围内?没有实际的 8 位寄存器,对吧?

4

3 回答 3

8

有实际的 8 位寄存器,它们只是完整寄存器的一部分。例如,在英特尔 CPU 上:

AL  8-bit
AH  8-bit
AX  16-bit
EAX 32-bit
RAX 64-bit

在图片中:

63                             32      24      16       8       0
|-------|-------|-------|-------|-------|-------|-------|-------|
                                                        |<- AL->|
                                                |<- AH->|
                                                |<----- AX ---->|
                                |<------------ EAX ------------>|
|<---------------------------- RAX ---------------------------->|
于 2011-11-16T09:42:21.487 回答
2

请参阅类似问题的出色答案。基本上,使用 Intel x86 架构,您可以访问寄存器的一部分。没有实际的 8 位寄存器是对的,但是有一些方法可以只访问完整寄存器的一部分。这是 Intel 的一个怪癖,因为 8086 希望尽可能与 8080 兼容。随着架构从 16 位到 32 位再到 64 位,这种怪癖随后被延续到新一代。通常,CPU 只支持完整的寄存器访问,所以这种分区有点奇怪。

于 2011-11-16T09:51:37.880 回答
0

在 x86 中,您可以将 16 位寄存器的高半部分和低半部分寻址为 8 位寄存器

于 2011-11-16T09:43:35.737 回答