x86_64 CPU 寄存器 RAX,EAX,AX,AH,AL
x86_64 CPU registers RAX,EAX,AX,AH,AL
一个64位的通用寄存器,example:RAX可以通过EAX(低32位),AX(低16位),AH,AL(b位)访问。我有以下问题;
这些(EAX/AX/AH/AL)是真正的物理寄存器还是mapping/notation访问RAX的一部分?
这些映射寄存器有什么用?
我知道如果我们更改 EAX/AX/AH/AL 这反过来会清除 RAX 并导致具有新值。
那么为什么要使用这些映射寄存器以及在什么情况下有用。
我的理解是基于从 16 位到 32 位的过渡,所以我不能具体说明 64 位的东西,但我的理解是 al/ah 的微处理器电路只影响物理寄存器中适当的 8 位电路和 ax 同样硬连线在处理器上,只影响低 16 位。我假设 64 位架构在相同的原则下工作,尽管老实说我没有对 64 位系统做太多研究。
寄存器当然是一堆晶体管,其布局方式为有 8/16/32/64 行代表构成寄存器中值的位。当你 read/write 到 AL 时,你是 reading/writing 直接到 AX 寄存器的低 8 行和 EAX 的低 8 行,并且大概是 RAX 寄存器的低 8 行。就像明智的 AX 到 EAX,很可能 EAX 到 RAX。
90 年代引入了虚拟化技术,允许在 32 位保护模式下运行的英特尔机器上使用 v86 模式进行 16 位处理,该模式使用映射技术而不是在实模式和保护模式之间切换,因为切换发生显着的处理惩罚和多任务操作系统无法同时有效地 运行 32 位程序和 16 位程序。
警告 - 我不熟悉 64 位机器的编写。
1) 它们是 RAX
的映射
2) 它们的存在主要是为了向后兼容较短的字长架构。它们偶尔对位旋转 RAX 很有用。
一个64位的通用寄存器,example:RAX可以通过EAX(低32位),AX(低16位),AH,AL(b位)访问。我有以下问题;
这些(EAX/AX/AH/AL)是真正的物理寄存器还是mapping/notation访问RAX的一部分?
这些映射寄存器有什么用? 我知道如果我们更改 EAX/AX/AH/AL 这反过来会清除 RAX 并导致具有新值。 那么为什么要使用这些映射寄存器以及在什么情况下有用。
我的理解是基于从 16 位到 32 位的过渡,所以我不能具体说明 64 位的东西,但我的理解是 al/ah 的微处理器电路只影响物理寄存器中适当的 8 位电路和 ax 同样硬连线在处理器上,只影响低 16 位。我假设 64 位架构在相同的原则下工作,尽管老实说我没有对 64 位系统做太多研究。
寄存器当然是一堆晶体管,其布局方式为有 8/16/32/64 行代表构成寄存器中值的位。当你 read/write 到 AL 时,你是 reading/writing 直接到 AX 寄存器的低 8 行和 EAX 的低 8 行,并且大概是 RAX 寄存器的低 8 行。就像明智的 AX 到 EAX,很可能 EAX 到 RAX。
90 年代引入了虚拟化技术,允许在 32 位保护模式下运行的英特尔机器上使用 v86 模式进行 16 位处理,该模式使用映射技术而不是在实模式和保护模式之间切换,因为切换发生显着的处理惩罚和多任务操作系统无法同时有效地 运行 32 位程序和 16 位程序。
警告 - 我不熟悉 64 位机器的编写。
1) 它们是 RAX
的映射2) 它们的存在主要是为了向后兼容较短的字长架构。它们偶尔对位旋转 RAX 很有用。