1
|
1 ; x86 timer in NASM |
|
2 ; |
|
3 ; Tom St Denis, tomstdenis@iahu.ca |
|
4 [bits 32] |
|
5 [section .data] |
|
6 time dd 0, 0 |
|
7 |
|
8 [section .text] |
|
9 |
|
10 %ifdef USE_ELF |
|
11 [global t_start] |
|
12 t_start: |
|
13 %else |
|
14 [global _t_start] |
|
15 _t_start: |
|
16 %endif |
|
17 push edx |
|
18 push eax |
|
19 rdtsc |
|
20 mov [time+0],edx |
|
21 mov [time+4],eax |
|
22 pop eax |
|
23 pop edx |
|
24 ret |
|
25 |
|
26 %ifdef USE_ELF |
|
27 [global t_read] |
|
28 t_read: |
|
29 %else |
|
30 [global _t_read] |
|
31 _t_read: |
|
32 %endif |
|
33 rdtsc |
|
34 sub eax,[time+4] |
|
35 sbb edx,[time+0] |
|
36 ret |
|
37 |