ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

为什么通用寄存器RAX,EAX,AX后面都有一个‘X’? - i686

为什么通用寄存器RAX,EAX,AX后面都有一个‘X’? - i686

导读

本文主要讲述了X86汇编下的通用寄存器RAX,EAX,AX名称中‘X’的来历。 “X”可以认为是“eXtended”,即组合的。

为什么需要寄存器?直接使用内存不好吗?

寄存器在 CPU 内部,速度最快,容量小,有固定名称,能直接参与运算。
内存在 CPU 外部,速度慢很多,容量大,只有地址,不能直接运算,必须先读到寄存器才能使用。

为什么非得是AX、EAX、RAX?

AX是一个16位的寄存器;EAX是扩展的(Extended)AX,因此它是32位的;RAX是一个64位的寄存器。

RAX
|
-----------------------------------------------------------------
63                            31               16       8        0|                |EAX              AX---------AH----------AL

如上图,这是一个简单的示意图(与实际有出入)。其中:

  • RAX 64位的寄存器
    • EAX 32 位的寄存器
      • AX 16位的寄存器
        • AH AX的高八位
        • AL AX的低八位

AX 里的 X 是 “eXtended”(可以理解为“组合”) 的意思,用来表示这是一个可拆分的 16 位寄存器,而不是单纯的 8 位寄存器。
实际上不论是只有16位的AX,还是目前正在为你的64位计算机工作的RAX,它们都是可以被拆分成多个不同位数的寄存器,这就是“X”的来历。

返回列表