X86 为什么只有四个寄存器?
为什么在最常见的CPU(x86)中只有四个寄存器?如果增加更多的寄存器,速度不会有很大的提高吗?什么时候会增加更多的寄存器?现在有4个以上的寄存器。如果您查看,您会发现它是从8086指令集演变而来的。英特尔一直希望在其处理器系列中保持一定程度的向后兼容性,因此所有后续处理器只需将原始A、B、C、D寄存器扩展到更广泛的位数。原始段寄存器今天可以用于一般用途,因为不再有真正的段(这是一个过于简单的说法,但基本上是正确的)。新的x64体系结构还提供了一些额外的寄存器X86 为什么只有四个寄存器?,x86,cpu-architecture,X86,Cpu Architecture,为什么在最常见的CPU(x86)中只有四个寄存器?如果增加更多的寄存器,速度不会有很大的提高吗?什么时候会增加更多的寄存器?现在有4个以上的寄存器。如果您查看,您会发现它是从8086指令集演变而来的。英特尔一直希望在其处理器系列中保持一定程度的向后兼容性,因此所有后续处理器只需将原始A、B、C、D寄存器扩展到更广泛的位数。原始段寄存器今天可以用于一般用途,因为不再有真正的段(这是一个过于简单的说法,但基本上是正确的)。新的x64体系结构还提供了一些额外的寄存器 寄存器过去实现起来很昂贵 不一定。
有许多体系结构具有更多寄存器(ARM、PowerPC等)。有时,它们可以实现更高的指令吞吐量,因为在操作堆栈时所做的工作更少,并且指令可能更短(无需引用堆栈变量)。相反,由于更多的寄存器保存,函数调用变得更昂贵。还有更多,这四个函数只是特殊的,它们是“通用的”,我认为,所有这些以及其他函数没有被大量使用的原因是:
- x86并不是事实上最好的标准指令集,Intell只是看到了向后兼容性的潜力,一旦AMD加入,这只是时间问题
- 现在这是事实上的标准,所以我们必须接受它
- 添加更多寄存器将不再是x86,因此您的意思是“基于x86创建一个具有更多寄存器的新指令集”
- 大多数编译器不会使用它们,因为它们也可以编译为x86,以针对x86的超集
- 更多的寄存器意味着更昂贵的硬件
- 还有其他更经济高效的方法来提高CPU性能
- 即使引入了更多,您仍然需要更新指令集并修改编译器以使用
- 已经有超过4个注册:来自维基百科(世界上最可靠的来源)
- AX/EAX/RAX:累加器
- BX/EBX/RBX:基本索引(例如:数组)
- CX/ECX/RCX:计数器
- DX/EDX/RDX:数据/通用
- SI/ESI/RSI:字符串操作的“源索引”
- DI/EDI/RDI:字符串操作的“目的地索引”
- SP/ESP/RSP:堆栈顶部地址的堆栈指针
- BP/EBP/RBP:用于保存当前堆栈帧地址的堆栈基指针
- IP/EIP/RIP:指令指针。保存程序计数器,即当前指令地址