首页 > 解决方案 > 为什么不能做 mov [eax], [ebx]

问题描述

我可以做这个:

mov eax, ebx

还有这个:

mov [eax], ebx

甚至这样:

mov eax, [ebx]

但不是这个(错误 C2415):

mov [eax], [ebx]

只是 wtf... 为什么?它与 *ptr1 = *ptr2 相同,为什么我能够将一个寄存器复制到另一个寄存器,通过寄存器中的地址将值复制到另一个寄存器或将寄存器的值复制到存储在另一个寄存器中的地址...

但它不能将一个地址上的值复制到另一个地址。为什么?

标签: assemblyx86

解决方案


mov [eax], [ebx]将意味着“将指向的内存位置的内容移动到指向ebx的内存位置eax。这是内存到内存的移动,英特尔不支持。


推荐阅读