【发布时间】:2021-07-25 09:27:02
【问题描述】:
#include <stdio.h>
void main()
{
//Variables
char string[] = "This is a string";
_asm {
XOR EAX, EAX
XOR EBX, EBX
XOR ECX, ECX
MOV EAX, [string]
}
我想要做的是将字符串的第一个元素的内存地址存储在 EAX 中,但我得到 "Operand size conflict" 。我猜解引用的语法是错误的,因为 eax 和内存地址都应该是 32 位,但是我在堆栈溢出时找不到任何关于它的信息
这是在 Visual Studio 上使用 C 中的 _asm 完成的
【问题讨论】:
-
您应该说明您正在使用的编译器和汇编器,因为它们之间的内联汇编细节差异很大。这看起来像一个 Visual C++ 类型的编译器,下面可能有一个 MASM 汇编器,所以你可能想要
MOV EAX, OFFSET string。
标签: assembly x86 inline-assembly