Error: `-4(%rdx,%ecx,4)' is not a valid base/index expression
int get_max3(int *a, int l)
{
int ret;
__asm__ __volatile__ (
"movl $0, %%eax\n\t"
".p2align 4,,15\n\t"
"LP1:\n\t"
"cmpl -4(%1,%2,4), %%eax\n\t"
"jge ED\n\t"
"movl -4(%1,%2,4), %%eax\n"
"ED:\n\t"
"decl %2\n\t"
"jnz LP1\n\t"
:"=m"(ret)
:"r"(a),"c"(l)
:"%eax"
);
return ret;
}
此错误由红色两行导致的报错。
原因是在64位编译器中明确使用了的32位整数类型的操作数,使用32位编译器可以编译通过。