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

时间:2011-11-16 09:39:42

标签: optimization x86 cpu cpu-registers 8-bit

阅读以下instruction table manual我发现8-bit registers的整数乘法通常要快得多。

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

3 个答案:

答案 0 :(得分:8)

有实际的8位寄存器,它们只是完整寄存器的部分。例如,在Intel cpus上:

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 ---------------------------->|

答案 1 :(得分:2)

请参阅this excellent answer一个类似的问题。基本上,使用Intel x86架构,您可以访问寄存器的部件。你是对的,没有实际的8位寄存器,但有一些方法只能访问完整寄存器的部分。这是英特尔的一个怪癖,因为8086希望尽可能与8080兼容。随着架构从16位转换到32位再到64位,这个怪癖继续传承给新一代。通常,CPU仅支持完全寄存器访问,因此这种分区有点奇怪。

答案 2 :(得分:0)

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