AFAIK x86-64 向 Intel x86 派生的寄存器( rax
、 rcx
等)添加了许多通用寄存器,称为 r8
- r15
.
他们为什么要这样命名新寄存器?
为什么不遵循现有的命名约定并将它们称为 rfx
, rgx
……?
最佳答案
对 CPU 寄存器进行编号是常态,几乎所有处理器都会这样做。然而,8086 处理器是古老的,早在 1976 年,它们的晶体管预算就极其有限。实现一个只有 20,000 个有源晶体管的 16 位处理器是非常棒的。他们减少的一种方法是为寄存器提供专用功能。在这一点上,给它们命名而不是数字是有意义的,暗示它们的用法。另一个影响是它旨在提供与 8080 处理器的兼容级别,它还具有具有专用功能的命名寄存器。
完全相反的设计是摩托罗拉 68000,三年后采用更先进的工艺技术设计,使晶体管预算增加一倍。一个非常正交的设计,(几乎)每个寄存器都可以在任何指令中自由使用。并且与早期设计不兼容。它有编号的寄存器(D0-D7 和 A0-A7)。
x86 架构的扩展再次使用编号寄存器,例如 R8 到 R15、MM0 到 MM7、XMM0-15、YMM0-15 等。
关于assembly - 为什么他们在 x86-64 中使用数字作为寄存器名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12770378/