最奇怪的错误输出:
#include <iostream>
int main(int arg, char **LOC[])
{
asm
(
"mov eax, 0CF;"
"pusha;"
);
return 0;
}
它抱怨,这是GCC的错误:
t.s:汇编程序消息:
t.s:31:错误:“mov”
的内存引用太多
答案 0 :(得分:9)
您收到此错误,因为您的程序集格式错误。寄存器访问与%eax
完成,$
用于立即操作数。此外,GCC默认情况下(参见DanielKO的评论)使用AT&amp; T语法,其右侧是目的地,左侧是源。这是你在找什么?
mov $0xcf, %eax
此外,您的pusha
不平衡,即您在从函数返回之前未正确清理堆栈。很高兴知道你的总体目标是什么,因为现在你似乎只复制并粘贴了一小部分来源。