1234567891011121314151617181920212223 |
- # Jan Potocki 2019
- # Funkcja odczytujaca i zwracajaca wartosc TSC (time-stamp counter)
-
- .globl rdtsc
- .type rdtsc, @function
-
- rdtsc:
- pushq %rbp # Wejscie do funkcji
- movq %rsp, %rbp
- pushq %rbx # Zapisanie wartosci rbx na stosie
- # (zgodnie z konwencja wywolan)
-
- movl $0, %eax # Wybor Maximum Return Value dla CPUID
- cpuid # Rozkaz serializujacy - zapobiega przesunieciu
- # rdtsc przez optymalizacje na poziomie mikrokodu
- rdtsc # edx:eax - time-stamp counter
-
- shlq $32, %rdx # Przesuniecie bitow z edx do wyzszej polowy rdx
- orq %rax, %rdx # W rax zwracany wynik (zlozony z edx:eax)
-
- popq %rbx # Przywrocenie wartosci rbx ze stosu
- popq %rbp # Wyjscie z funkcji
- ret
|