x86_64 CPU寄存器RAX,EAX,AX,AH,AL

问题描述 投票:0回答:2

64位通用寄存器,例如:RAX可以通过EAX(低32位),AX(低16位),AH,AL(b位)进行访问。我确实有以下问题;

  1. 这些(EAX / AX / AH / AL)真正的物理寄存器还是访问RAX一部分的映射/符号?

  2. 这些映射寄存器的用途是什么?我知道,如果我们更改EAX / AX / AH / AL,则这将清除RAX,并导致具有新值。那么为什么要使用这些映射寄存器,以及在什么情况下有用呢?

assembly x86-64 cpu-registers
2个回答
0
投票

我的理解是基于从16位到32位的过渡,因此我不能专门使用64位的东西,但是我的理解是,用于al / ah的微处理器电路仅影响物理寄存器电路中的适当8位,并且ax是同样,在处理器上进行硬连线以仅影响低16位。尽管我并没有对64位系统进行过多研究,但我仍以64位体系结构在相同原理下工作的假设为前提。

寄存器当然是一堆晶体管,其布局方式是有8/16/32/64行,这些行代表形成寄存器中值的位。当您读/写AL时,您是直接在AX寄存器的低8行和EAX的低8行以及RAX寄存器的低8行进行读/写。就像明智的AX到EAX一样,极有可能是EAX到RAX。

虚拟化技术是在90年代引入的,以允许使用v86模式在以32位保护模式运行的intel机器上进行16位处理,该技术使用了映射技术,而不是在实模式和受保护模式之间切换,因为切换会产生大量的处理惩罚并且多任务操作系统无法同时有效地运行32位程序和16位程序。


0
投票

1)它们是RAX的映射

2)主要是为了与较短的字长体系结构向后兼容而存在。它们偶尔对位RAX有用。

© www.soinside.com 2019 - 2024. All rights reserved.