C++ 为什么在使用本地变量时,这个使用mov算法的有效程序集不能编译?
我正在使用Visual Studio 2017并编译32位 假设我有以下代码片段。未编译的语句给出“无效操作数”错误C++ 为什么在使用本地变量时,这个使用mov算法的有效程序集不能编译?,c++,assembly,x86,C++,Assembly,X86,我正在使用Visual Studio 2017并编译32位 假设我有以下代码片段。未编译的语句给出“无效操作数”错误 intlocalvar=0; __asm{ mov eax,[esp+4]x86指令集没有内存到内存的移动指令。所有指令都涉及两个寄存器或一个寄存器和一个内存位置。变量localVar是一个内存位置。基本上,您要写的是: movdw [ebp-4], [esp+4] 相反,您应该: mov eax, [esp+4] mov localVar, eax x86指令集没有内存到内
intlocalvar=0;
__asm{
mov eax,[esp+4]x86指令集没有内存到内存的移动指令。所有指令都涉及两个寄存器或一个寄存器和一个内存位置。变量localVar
是一个内存位置。基本上,您要写的是:
movdw [ebp-4], [esp+4]
相反,您应该:
mov eax, [esp+4]
mov localVar, eax
x86指令集没有内存到内存的移动指令。所有指令都涉及两个寄存器或一个寄存器和一个内存位置。变量localVar
是一个内存位置。基本上,您编写的是:
movdw [ebp-4], [esp+4]
相反,您应该:
mov eax, [esp+4]
mov localVar, eax
您可以从内存移动到寄存器,或从寄存器移动到内存,但不能直接从内存移动到内存。您可以从内存移动到寄存器,或从寄存器移动到内存,但不能直接从内存移动到内存。