long ret;
__asm__ volatile (
"movl %1, %%eax\n\t"
"movl %2, %%ebx\n\t"
"movl %3, %%ecx\n\t"
"movl %4, %%edx\n\t"
"movl %5, %%esi\n\t"
"movl %6, %%edi\n\t"
"movl %7, %%ebp\n\t"
"int $0x80\n\t"
"movl %%eax, %0\n\t"
:"=r"(ret)
:"r"(num), "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "r"(arg4), "r"(arg5)
:"%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi", "%ebp"
);
return ret;