'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
指令中引用 两个 内存位置。
我查看了所有关于如何解决此问题的建议线程,但找不到与我的错误相符的线程。
当我编译时我得到 "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
指令中引用 两个 内存位置。