【发布时间】:2017-04-26 00:25:11
【问题描述】:
如果我从 32 位寄存器中移动一个值,说:
movq %rdx,%rax
movl %edx,%eax
%rax 中存储的值会被破坏吗?
【问题讨论】:
-
是的,虽然不是你想的那样。您也可以尝试一下。
-
是的,当然。无论您是否使用 8/16/32/64 位模式寻址,它都是同一个寄存器。这是一个很好的图表:stackoverflow.com/a/228367/14955
-
@Jester “不是你想的那样。”请详细说明。
-
@Thilo 他已将
rdx移至rax,然后将edx移至eax。如果不是因为 32 位操作将高位清零,这通常不会改变任何事情。