Inline Assembly - GCD


int gcd(int a, int b)
{
    int result ;

    asm volatile (
    "movl %1, %%eax;"
    "movl %2, %%ebx;"
    "CONTD: cmpl $0, %%ebx;"
    "je DONE;"
    "xorl %%edx, %%edx;"
    "idivl %%ebx;"
    "movl %%ebx, %%eax;"
    "movl %%edx, %%ebx;"
    "jmp CONTD;"
    "DONE: movl %%eax, %0;" : "=g" (result) : "g" (a), "g" (b)
    );

    return result ;
}



你可能感兴趣的:(assembly)