Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 澄清32位寄存器x86的子部分_Assembly_X86_Stack_Cpu Registers - Fatal编程技术网

Assembly 澄清32位寄存器x86的子部分

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寄存器的下部包

关于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寄存器的下部包含
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免费下载)。