(linenum→info "unix/slp.c:2238")

openssl/0.9.8g/times/x86/rc4s.cpp

    1: //
    2: // gettsc.inl
    3: //
    4: // gives access to the Pentium's (secret) cycle counter
    5: //
    6: // This software was written by Leonard Janke (janke@unixg.ubc.ca)
    7: // in 1996-7 and is entered, by him, into the public domain.
    8: 
    9: #if defined(__WATCOMC__)
   10: void GetTSC(unsigned long&);
   11: #pragma aux GetTSC = 0x0f 0x31 "mov [edi], eax" parm [edi] modify [edx eax];
   12: #elif defined(__GNUC__)
   13: inline
   14: void GetTSC(unsigned long& tsc)
   15: {
   16:   asm volatile(".byte 15, 49\n\t"
   17:                : "=eax" (tsc)
   18:                :
   19:                : "%edx", "%eax");
   20: }
   21: #elif defined(_MSC_VER)
   22: inline
   23: void GetTSC(unsigned long& tsc)
   24: {
   25:   unsigned long a;
   26:   __asm _emit 0fh
   27:   __asm _emit 31h
   28:   __asm mov a, eax;
   29:   tsc=a;
   30: }
   31: #endif      
   32: 
   33: #include <stdio.h>
   34: #include <stdlib.h>
   35: #include <openssl/rc4.h>
   36: 
   37: void main(int argc,char *argv[])
   38:         {
   39:         unsigned char buffer[1024];
   40:         RC4_KEY ctx;
   41:         unsigned long s1,s2,e1,e2;
   42:         unsigned char k[16];
   43:         unsigned long data[2];
   44:         unsigned char iv[8];
   45:         int i,num=64,numm;
   46:         int j=0;
   47: 
   48:         if (argc >= 2)
   49:                 num=atoi(argv[1]);
   50: 
   51:         if (num == 0) num=256;
   52:         if (num > 1024-16) num=1024-16;
   53:         numm=num+8;
   54: 
   55:         for (j=0; j<6; j++)
   56:                 {
   57:                 for (i=0; i<10; i++) /**/
   58:                         {
   59:                         RC4(&ctx,numm,buffer,buffer);
   60:                         GetTSC(s1);
   61:                         RC4(&ctx,numm,buffer,buffer);
   62:                         GetTSC(e1);
   63:                         GetTSC(s2);
   64:                         RC4(&ctx,num,buffer,buffer);
   65:                         GetTSC(e2);
   66:                         RC4(&ctx,num,buffer,buffer);
   67:                         }
   68: 
   69:                 printf("RC4 (%d bytes) %d %d (%d) - 8 bytes\n",num,
   70:                         e1-s1,e2-s2,(e1-s1)-(e2-s2));
   71:                 }
   72:         }
   73: 
Syntax (Markdown)