gpt4 book ai didi

assembly - 阐明 32 位寄存器 x86 的子部分

转载 作者:行者123 更新时间:2023-12-02 22:07:33 25 4
gpt4 key购买 nike

我有一个关于 x86 汇编中 32 位寄存器的子部分的问题:寄存器的较低部分(使用时)是否被视为相应 32 位寄存器的一部分?

ror cl,2    ror cl,2push ecxpop eax

以上面的代码部分为例 - 因为 CLECX 寄存器的一个子部分,当我将寄存器的内容压入堆栈时,会执行CL 小节也被压入堆栈?还是分开对待?

然后假设如果我随后将堆栈弹出到 EAX 寄存器,那么在进入 EAX 寄存器之前在 CL 寄存器中执行的操作?

最佳答案

ECX 寄存器的下半部分包含CX,其中包含CHCL,如下面的图片。当修改存储在 CL 中的值时,您还会更改 CXECX,但不会更改 CH

回答您的问题:

问: 当我将寄存器 [ECX] 的内容压入堆栈时,会执行 CL 小节中的操作也被插入堆栈?还是分开对待?
答:一口气。 CLECX 的一部分。 CL 只是处理器提供的一种访问 ECX 的一部分的方式。

问: 然后假设如果我随后将堆栈弹出到 EAX 寄存器中,会执行之前在 CL 寄存器中的操作进入 EAX 寄存器?
答:是的。更准确地说,CL 中的内容将进入 AL

enter image description here

来源: A tutorial on Register Allocation by Puzzle Solving (在 compilers.cs.ucla.edu 上)

关于assembly - 阐明 32 位寄存器 x86 的子部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869950/

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