Assembly movl是否保持源寄存器的原始值?

Assembly movl是否保持源寄存器的原始值?,assembly,x86,intel,Assembly,X86,Intel,请注意英特尔x86 在寄存器上调用movl后,可以这样说: movl %eax,-8(%ebp) %eax的原始值仍在%eax中还是仅在内存中的-8(%ebp)处?mov指令根本不会更改源,因此您的问题的简短答案是“是”。%eax的原始值仍在%eax中,就好像什么也没有发生一样。源寄存器不受移动的影响。您可以在中获得所有详细信息。mov更像是一个副本,因此它不会以任何方式修改源代码。感谢@user3386109的“谷歌it”回答。我已经读过了,但它总是说将值从foo移动到bar,而不是指

请注意英特尔x86

在寄存器上调用movl后,可以这样说:

movl    %eax,-8(%ebp)

%eax的原始值仍在%eax中还是仅在内存中的-8(%ebp)处?

mov指令根本不会更改源,因此您的问题的简短答案是“是”。%eax的原始值仍在%eax中,就好像什么也没有发生一样。

源寄存器不受移动的影响。您可以在中获得所有详细信息。
mov
更像是一个副本,因此它不会以任何方式修改源代码。感谢@user3386109的“谷歌it”回答。我已经读过了,但它总是说将值从foo移动到bar,而不是指定是否维护它。从文档中可以看出:“MOV在通用寄存器之间移动数据;在内存和通用寄存器或段寄存器之间移动数据;立即移动到通用寄存器”英特尔指令集参考中
MOV
的“说明”部分的第一句话是“复制第二个操作数(源操作数)对于第一个操作数(目标操作数)。“对于复制操作,选择
mov
助记符而不是
cpy
,有时也会让我感到困惑,因为它错误地描述了语义。但是,一旦你理解了哲学上的争论,就很容易键入并以一个不同于同样常见的
cmp
compare助记符的字母开始。insn ref手册小心地注意到,当一个操作将任何内容保留在未定义状态(通常是标志)时,它不会对任何指令的src操作数说类似的话。“数据移动”是一个常用术语。