#include #include #include int main(void) { unsigned long cycles; if (iopl(3) < 0) { perror("iopl"); return EXIT_FAILURE; } asm ( "cli \n\t" "rdtsc \n\t" "movl %%eax, %%ecx \n\t" "outb %%al, $0x80 \n\t" "rdtsc \n\t" "subl %%ecx, %%eax \n\t" "sti " : "=a" (cycles) : : "ecx", "edx"); printf("out = %lu\n", cycles); asm ( "cli \n\t" "rdtsc \n\t" "movl %%eax, %%ecx \n\t" "inb $0x80, %%al \n\t" "rdtsc \n\t" "subl %%ecx, %%eax \n\t" "sti " : "=a" (cycles) : : "ecx", "edx"); printf("in = %lu\n", cycles); return EXIT_FAILURE; }