'mov' 的内存引用过多

too many memory references for 'mov'

我查看了所有关于如何解决此问题的建议线程,但找不到与我的错误相符的线程。

当我编译时我得到 "too many memory references for 'mov'",即使我把它们全部取出...?

__asm__(
    "mov    0x8(%ebp),  %edx;"
    "mov    0x8(%edx),  %edx;"
    "cmp        [=11=]x0,       %edx;"
    "je     notFound;"

    "sub        [=11=]x10,      %esp;"
    "movl   0xc(%ebp),  (%esp);"
    "movl   [=11=]x24,      0x8(%esp);"


    "mainloop: "
    "movl   %edx,       0x4(%esp);"
    "call _memcmp;"
    "cmp        [=11=]xffffffff,    %eax;"
    "je     leftBranch;"

    "cmp        [=11=]x1,       %eax;"
    "je     rightBranch;"
    "jne        found;"


    "leftBranch: "
    "mov    0xc(%edx),  %edx;"
    "cmp        [=11=]x0,       %edx;"
    "je     notFound;"
    "jne        mainloop;"

    "rightBranch: "
    "mov    0x10(%edx), %edx;"
    "cmp        [=11=]x0,       %edx;"
    "je     notFound;"
    "jne        mainloop;"

    "notFound: "
    "mov    [=11=]x0,       %eax;"
    "add        [=11=]x10,      %esp;"  
    "leave;"
    "ret;"

    "found: "
    "add        [=11=]x10,      %esp;"
    "leave;"
    "ret;"
);

问题可能出在这一行:

"movl   0xc(%ebp),  (%esp);"

您不能在单个 mov 指令中引用 两个 内存位置。