Optimization 桌面cpu上的8位寄存器是什么?

Optimization 桌面cpu上的8位寄存器是什么?,optimization,x86,cpu,cpu-registers,8-bit,Optimization,X86,Cpu,Cpu Registers,8 Bit,通读以下内容,我发现对于8位寄存器,整数乘法通常要快得多 在普通桌面cpu环境中,8位寄存器意味着什么?32位寄存器中存储的值恰好在8位范围内?没有实际的8位寄存器,对吗?有实际的8位寄存器,它们只是完整寄存器的一部分。例如,在英特尔CPU上: AL 8-bit AH 8-bit AX 16-bit EAX 32-bit RAX 64-bit 图片: 63 32 24 16 8 0 |--

通读以下内容,我发现对于
8位寄存器
,整数乘法通常要快得多


在普通桌面cpu环境中,
8位寄存器
意味着什么?32位寄存器中存储的值恰好在8位范围内?没有实际的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 ---------------------------->|
63 32 24 16 8 0
|-------|-------|-------|-------|-------|-------|-------|-------|
||
||
||
||
||

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

请参见类似问题。基本上,使用Intel x86体系结构,您可以访问寄存器的一部分。您是对的,没有实际的8位寄存器,但是有一些方法可以只访问完整寄存器的一部分。这是英特尔的一个怪癖,因为8086希望尽可能与8080兼容。随着体系结构从16位到32位再到64位的转变,这种怪癖也随之延续到了新一代。通常,CPU只支持完全寄存器访问,因此此分区有点奇怪。

不要将延迟与吞吐量混淆-只是因为指令具有更高的延迟,并不意味着它一定是慢的。8位寄存器乘法也有更好的吞吐量。在某些x86 CPU上,这是正确的。