colorful rat Ratfactor.com > Dave's Repos

nasmjf

A NASM assembler port of JONESFORTH
git clone http://ratfactor.com/repos/nasmjf/nasmjf.git

nasmjf/jonesforth/perf_dupdrop.c

Download raw file: jonesforth/perf_dupdrop.c

1 /* Ideal DUP DROP * 1000 assuming perfect inlining. 2 $Id: perf_dupdrop.c,v 1.1 2007-10-10 13:01:05 rich Exp $ 3 */ 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 8 #define DUP \ 9 asm volatile ("mov (%%esp),%%eax\n" \ 10 "\tpush %%eax" \ 11 : : : "eax") 12 #define DROP \ 13 asm volatile ("pop %%eax" \ 14 : : : "eax") 15 16 #define DUPDROP DUP; DROP; 17 #define DUPDROP10 DUPDROP DUPDROP DUPDROP DUPDROP DUPDROP DUPDROP DUPDROP DUPDROP DUPDROP DUPDROP 18 #define DUPDROP100 DUPDROP10 DUPDROP10 DUPDROP10 DUPDROP10 DUPDROP10 DUPDROP10 DUPDROP10 DUPDROP10 DUPDROP10 DUPDROP10 19 #define DUPDROP1000 DUPDROP100 DUPDROP100 DUPDROP100 DUPDROP100 DUPDROP100 DUPDROP100 DUPDROP100 DUPDROP100 DUPDROP100 DUPDROP100 20 21 int 22 main (int argc, char *argv[]) 23 { 24 unsigned long long start_time, end_time; 25 26 asm volatile ("rdtsc" : "=A" (start_time)); 27 DUPDROP1000 28 asm volatile ("rdtsc" : "=A" (end_time)); 29 30 printf ("%llu\n", end_time - start_time); 31 32 exit (0); 33 }