assembly 阐明32位寄存器x86的小节

t5fffqht  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(93)

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

ror cl,2    
ror cl,2
push ecx
pop eax

字符串
以上面的代码部分为例,由于CLECX寄存器的一个子部分,当我将寄存器的内容推送到堆栈上时,CL子部分中的内容也会被推送到堆栈上吗?或者它们是分开处理的?
假设我将堆栈弹出到EAX寄存器,那么之前CL寄存器中的内容是否会进入EAX寄存器?

nx7onnlm

nx7onnlm1#

ECX寄存器在其下部包含CX,其下部包含CHCL,如下图所示。当修改存储在CL中的值时,也会更改CXECX,但不会更改CH

回答您的问题:
Q: 当我将寄存器[ ECX ]的内容压入堆栈时,CL子部分中的内容也会被压入堆栈吗?还是它们被分开处理?.
**A:**All in one shot. CLECX的一部分。CL只是处理器提供的访问ECX的一部分的方式。
问: 假设我将堆栈弹出到EAX寄存器上,那么之前CL寄存器中的内容是否会进入EAX寄存器?
**A:**是的,更准确地说,CL中的内容将进入AL


的数据

相关问题