#include unsigned long long rdtsc(void) { unsigned long eax, edx; __asm __volatile("rdtsc" : "=d" (edx), "=a" (eax)); return (((long long)edx << 32) | eax); } int main(int argc, char **argv) { int a, b, c, i, iters; unsigned long long start, end; if (argc < 4) { printf("Usage: %s \n", argv[0]); return (1); } a = atoi(argv[1]); b = atoi(argv[2]); iters = atoi(argv[3]); start = rdtsc(); for (i = 0; i < iters; i++) { c = a / b; __asm __volatile("" : : : "memory"); } end = rdtsc(); printf("c = %d start %llx end %llx time %lld\n", c, start, end, (long long)(end - start) / iters); return (0); }