通过阅读下面的instruction table manual,我发现8-bit registers的整数乘法通常要快得多。
在普通桌面cpu的情况下,8-bit register是什么意思?存储在ie 32位寄存器中的值恰好在8位范围内?没有真正的8位寄存器,对吧?
发布于 2011-11-16 17:42:21
有实际的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 ---------------------------->|发布于 2011-11-16 17:51:38
请参阅this excellent answer来回答类似的问题。基本上,使用英特尔x86架构,您可以访问寄存器的一部分。你是对的,没有实际的8位寄存器,但有方法只访问整个寄存器的一部分。这是英特尔的一个怪癖,因为8086希望尽可能地与8080兼容。随着体系结构从16位过渡到32位再到64位,这种怪癖随后被延续到新一代。通常,CPU只支持全寄存器访问,所以这种分区有点奇怪。
发布于 2011-11-16 17:43:36
在x86中,您可以将16位寄存器的高半部分和低半部分寻址为8位寄存器
https://stackoverflow.com/questions/8149480
复制相似问题