gpt4 book ai didi

assembly - Intel x86 32位寄存器困惑

转载 作者:行者123 更新时间:2023-12-02 19:32:32 24 4
gpt4 key购买 nike

我一直在尝试在 Linux 操作系统上学习 32 位 Intel x86 nasm 语法汇编,并且遇到了有关四个通用 32 位寄存器的问题。

根据我一直的想法,eax 是一个 32 位寄存器,应该与 16 位寄存器 ax 一起使用,它被分割为ah(高 8 位)和 al(低 8 位)。 ebx、ecx 和 edx 也是如此。

然而,读完一篇简短的文章后,我变得有点困惑。

32位寄存器是由16位寄存器(16位寄存器又由两个8位寄存器组成)加上额外的16位组成的吗?

到目前为止,根据我在 Google 上读到的内容,所有结果都说明了它们的用途,而不是它们的实际成分。

最佳答案

你说得完全正确。四个通用寄存器EAX , EBX , ECXEDX组成如下(我在示例中使用了累加器):

  1. 首先,我们有 16 位字的低字节和高字节。所以,AX = AH || AL
  2. 然后,我们就有了 AX 的 16 位扩展,形成双字。所以,EAX = EAX(31:16) || AX .
  3. (在 AMD64 中)然后将双字寄存器扩展到 qword 寄存器。因此,我们有RAX = RAX(63:32) || EAX .

||运算符是连接运算符。您应该注意,此规则不适用于其他四个通用寄存器 ESP , EBP , ESIEDI .

关于assembly - Intel x86 32位寄存器困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9137145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com