【问题标题】:too many memory references for 'mov''mov' 的内存引用过多
【发布时间】:2015-05-05 03:45:30
【问题描述】:

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

当我编译时,我得到“'mov' 的内存引用太多”,即使我把它们全部取出......?

__asm__(
    "mov    0x8(%ebp),  %edx;"
    "mov    0x8(%edx),  %edx;"
    "cmp        $0x0,       %edx;"
    "je     notFound;"

    "sub        $0x10,      %esp;"
    "movl   0xc(%ebp),  (%esp);"
    "movl   $0x24,      0x8(%esp);"


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

    "cmp        $0x1,       %eax;"
    "je     rightBranch;"
    "jne        found;"


    "leftBranch: "
    "mov    0xc(%edx),  %edx;"
    "cmp        $0x0,       %edx;"
    "je     notFound;"
    "jne        mainloop;"

    "rightBranch: "
    "mov    0x10(%edx), %edx;"
    "cmp        $0x0,       %edx;"
    "je     notFound;"
    "jne        mainloop;"

    "notFound: "
    "mov    $0x0,       %eax;"
    "add        $0x10,      %esp;"  
    "leave;"
    "ret;"

    "found: "
    "add        $0x10,      %esp;"
    "leave;"
    "ret;"
);

【问题讨论】:

    标签: c assembly x86 mov


    【解决方案1】:

    问题可能出在这一行:

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

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

    【讨论】:

      猜你喜欢
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 2011-02-01
      • 2016-01-08
      • 2011-12-05
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多