OpenSSL
1.0.1c
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
times
x86
bfs.cpp
Go to the documentation of this file.
1
//
2
// gettsc.inl
3
//
4
// gives access to the Pentium's (secret) cycle counter
5
//
6
// This software was written by Leonard Janke (
[email protected]
)
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 31
h
28
__asm mov
a
, eax;
29
tsc=
a
;
30
}
31
#endif
32
33
#include <stdio.h>
34
#include <stdlib.h>
35
#include <
openssl/blowfish.h
>
36
37
void
main
(
int
argc,
char
*argv[])
38
{
39
BF_KEY
key
;
40
unsigned
long
s1,s2,e1,e2;
41
unsigned
long
data
[2];
42
int
i,j;
43
44
for
(j=0; j<6; j++)
45
{
46
for
(i=0; i<1000; i++)
47
{
48
BF_encrypt
(&data[0],&key);
49
GetTSC(s1);
50
BF_encrypt
(&data[0],&key);
51
BF_encrypt
(&data[0],&key);
52
BF_encrypt
(&data[0],&key);
53
GetTSC(e1);
54
GetTSC(s2);
55
BF_encrypt
(&data[0],&key);
56
BF_encrypt
(&data[0],&key);
57
BF_encrypt
(&data[0],&key);
58
BF_encrypt
(&data[0],&key);
59
GetTSC(e2);
60
BF_encrypt
(&data[0],&key);
61
}
62
63
printf(
"blowfish %d %d (%d)\n"
,
64
e1-s1,e2-s2,((e2-s2)-(e1-s1)));
65
}
66
}
67
Generated on Thu Jan 10 2013 09:53:34 for OpenSSL by
1.8.2