gpt4 book ai didi

c++ - 为什么在使用局部变量时这个带有 mov 算术的有效程序集不能编译?

转载 作者:行者123 更新时间:2023-11-28 01:50:04 24 4
gpt4 key购买 nike

<分区>

我正在使用 Visual Studio 2017 并针对 32 位进行编译。

假设我有以下代码片段。不编译的语句给出“无效操作数”错误。

int localVar = 0;
__asm {
mov eax, [esp+4] <----- compiles
mov localVar, esp <----- compiles
mov localVar, [esp] <----- doesn't compile
mov localVar, [esp+4] <----- doesn't compile
}

我知道第二个和第三个陈述并不等同,但我想强调以下几点......

从本质上讲,如果我以这种方式在第二个操作数周围使用方括号并将结果存储到局部变量中,这似乎是行不通的。我印象中使用方括号是有效的语法,第一个将结果存储到 eax 中的语句证明了这一点。

我推测这可能与我的变量类型有关,我尝试将 mov 更改为 movl 但这也不起作用。

基本上我的最终目标是让它正常工作:mov 本地变量,[esp+4]我如何实现这一目标? localVar 的类型不必是 int...我只是认为这应该有效。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com