1

最奇怪的错误输出:

#include <iostream>
int main(int arg, char **LOC[])
{
asm
(
"mov eax, 0CF;"
"pusha;"
);
return 0;
}

它抱怨,这是来自 GCC 的错误:

ts:汇编程序消息:

ts:31: 错误: `mov' 的内存引用过多

4

1 回答 1

9

您收到此错误是因为您的程序集格式错误。寄存器访问类似于%eax,$用于立即操作数。此外,默认情况下(参见 DanielKO 的评论),GCC 使用 AT&T 语法,其目标在右侧,源在左侧。这是你想要的?

mov $0xcf, %eax

此外,您pusha的不平衡,即您在从函数返回之前没有正确清理堆栈。很高兴知道您的总体目标是什么,因为现在您似乎只复制和粘贴了源代码的不完整部分。

于 2013-11-04T22:17:15.543 回答