У меня есть следующая функция:
int max(int num1, int num2)
{
int retval;
__asm__("maxii_start:;"
"movl %1, %%eax;"
"subl $0, %%eax;"
"movl %2, %%edx;"
"subl $0, %%edx;"
"cmpl %%edx, %%eax;"
"jle maxii0;"
"addl $0, %%eax;"
"jmp maxii1;"
"maxii0:;"
"movl %%edx, %%eax;"
"maxii1:;"
"movl %%eax, %0;"
"ret;"
:"=r"(retval)
:"r"(num1), "r"(num2)
);
return retval;
}
Когда я использую его, например. как int m = max(5, 10);
Я вижу Ошибка сегментации (ядро сброшено).
Я думаю, что я неправильно использую cmpl
. Что не так с этой функцией?