通读以下指令表手册,我发现整数乘法通常要快得多8-bit registers
。
在普通桌面cpu的上下文中,是什么8-bit register
意思?存储在 32 位寄存器中的值恰好在 8 位范围内?没有实际的 8 位寄存器,对吧?
通读以下指令表手册,我发现整数乘法通常要快得多8-bit registers
。
在普通桌面cpu的上下文中,是什么8-bit register
意思?存储在 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 ---------------------------->|
请参阅类似问题的出色答案。基本上,使用 Intel x86 架构,您可以访问寄存器的一部分。没有实际的 8 位寄存器是对的,但是有一些方法可以只访问完整寄存器的一部分。这是 Intel 的一个怪癖,因为 8086 希望尽可能与 8080 兼容。随着架构从 16 位到 32 位再到 64 位,这种怪癖随后被延续到新一代。通常,CPU 只支持完整的寄存器访问,所以这种分区有点奇怪。
在 x86 中,您可以将 16 位寄存器的高半部分和低半部分寻址为 8 位寄存器