Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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
C++ 为什么在使用本地变量时,这个使用mov算法的有效程序集不能编译?_C++_Assembly_X86 - Fatal编程技术网

C++ 为什么在使用本地变量时,这个使用mov算法的有效程序集不能编译?

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指令集没有内存到内

我正在使用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指令集没有内存到内存的移动指令。所有指令都涉及两个寄存器或一个寄存器和一个内存位置。变量
localVar
是一个内存位置。基本上,您编写的是:

movdw [ebp-4], [esp+4]
相反,您应该:

mov eax, [esp+4]
mov localVar, eax

您可以从内存移动到寄存器,或从寄存器移动到内存,但不能直接从内存移动到内存。您可以从内存移动到寄存器,或从寄存器移动到内存,但不能直接从内存移动到内存。