为什么他们在x86-64中使用数字作为寄存器名称?

szx*_*szx 3 assembly x86-64 cpu-registers isa

AFAIK X86-64增加了大量的通用寄存器的那些从英特尔86(派生rax,rcx等),被称为r8- r15.

他们为什么要这样命名新的寄存器?为什么不遵循现有的命名规则,并呼吁他们一样rfx,rgx...?

Han*_*ant 8

编号CPU寄存器是常态,几乎所有处理器都这样做.然而,8086处理器很古老,它们在1976年的晶体管预算非常有限.实现一个只有20,000个有源晶体管的16位处理器是一个非常强大的解决方案.他们减少的一种方法是给寄存器专用功能.在这一点上,给他们的名字而不是数字是有意义的,暗示他们的用法.另一个影响是它的设计旨在提供与8080处理器的兼容性,它还具有命名寄存器和专用功能.

完全相反的设计是摩托罗拉68000,三年后设计了更先进的工艺技术,允许晶体管预算翻倍.一个非常正交的设计,(几乎)每个寄存器可以在任何指令中自由使用.与早期的设计无法兼容.它有编号寄存器(D0-D7和A0-A7).

x86架构的扩展再次使用编号寄存器,如R8到R15,MM0到MM7,XMM0-15,YMM0-15等.

  • 在 8086 CPU 推出时(在 68000 之前一年),带有“类似 68000”寄存器集的 CPU 至少不常见——如果它们确实存在的话。“类6809”寄存器名称(A、B、X、Y、S、U、FL、PC)在当时是正常的。因此,英特尔以当时常见的方式命名 8086 的寄存器。 (3认同)