Assembly 澄清32位寄存器x86的子部分
关于x86汇编中32位寄存器的子部分,我有一个问题:寄存器的较低子部分(使用时)是否被视为相应32位寄存器的一部分 ror cl,2 ror cl,2 push ecx pop eax ror cl,2 ror cl,2 推ecx 波普eax 以上面的代码部分为例-由于Assembly 澄清32位寄存器x86的子部分,assembly,x86,stack,cpu-registers,Assembly,X86,Stack,Cpu Registers,关于x86汇编中32位寄存器的子部分,我有一个问题:寄存器的较低子部分(使用时)是否被视为相应32位寄存器的一部分 ror cl,2 ror cl,2 push ecx pop eax ror cl,2 ror cl,2 推ecx 波普eax 以上面的代码部分为例-由于CL是ECX寄存器的一个子部分,当我将寄存器的内容推到堆栈上时,CL子部分中的内容是否也被推到堆栈上?还是分开处理 假设我随后将堆栈弹出到EAX寄存器,那么CL寄存器中以前的内容是否会进入EAX寄存器 ECX寄存器的下部包
CL
是ECX
寄存器的一个子部分,当我将寄存器的内容推到堆栈上时,CL
子部分中的内容是否也被推到堆栈上?还是分开处理
假设我随后将堆栈弹出到
EAX
寄存器,那么CL
寄存器中以前的内容是否会进入EAX
寄存器 ECX寄存器的下部包含CX
,其中包含CH
和CL
,如下图所示。修改存储在CL
中的值时,您还可以更改CX
和ECX
,但不能更改CH
回答您的问题:
Q:当我将寄存器[ECX
]的内容推到堆栈上时,CL
小节中的内容是否也被推到堆栈上?或者他们被单独对待?
A:一炮打响
CL
是ECX
的一部分CL
只是处理器提供的一种访问ECX
一部分的方法
Q:假设我随后将堆栈放入EAX
寄存器,那么CL
寄存器中之前的内容会进入EAX
寄存器吗?
A:是。更准确地说,
CL
中的内容将进入AL
源代码:(在compilers.cs.ucla.edu上)
CL
只是访问ECX
的一些位的一种方便方法,它们是相同的寄存器。按下ECX也会按下CL中的8位。将其放入EAX将把这8位复制到AL中。@Linuxios&Hans Passant-好的,干杯,伙计们,我明白你们的意思了。非常感谢您能阅读您的CPU手册(可从intel.com或amd.com免费下载)。