#include <stdio.h>
// signed int div & mul
// c = a / b; d = a % b;
inline void _sid(int* c, int* d, int a, int b) {
asm(
"idiv %%ebx;"
:"=a"(*c),"=d"(*d)
:"a"(a),"d"(0),"b"(b)
);
// return(*c);
}
// signed int div & mul
// c = a / b; d = a % b;
#define sid(__c__, __d__, __a__, __b__) {\
asm(\
"idiv %%ebx;"\
:"=a"(__c__),"=d"(__d__):\
"a"(__a__),"d"(0),"b"(__b__)\
);\
}
static void sid100M(void){ int a=10,b=20,c=30,d=40; int i=100000000; while(i-->0){ sid( a,b, c,d); } }
static void _sid100M(void){ int a=10,b=20,c=30,d=40; int i=100000000; while(i-->0){ _sid( &a,&b, c,d); } }
static void div_mul100M(void){ int a=10,b=20,c=30,d=40; int i=100000000; while(i-->0){ a=c/d; b=c%d; } }
void main() {
sid100M();
_sid100M();
div_mul100M();
}