feat: добавлены замеры тиков для последней команды

This commit is contained in:
root
2024-10-01 22:20:37 +03:00
parent f2ca981037
commit a309019bdb
2 changed files with 31 additions and 3 deletions

View File

@ -46,7 +46,7 @@ section .text
syscall
RPOP_M rax, rdi, rsi, rcx
mov rcx, 1000000000 ; выполняем миллион раз
mov rcx, 10000000000; выполняем миллион раз
%%loop:
%1
loop %%loop
@ -76,16 +76,19 @@ section .text
%endmacro
%macro PRINT_DELTATIME 1
sub rsp, 8
;sub rsp, 8
mov rdi, str_template
mov rsi, %1
mov rdx, [deltatime + timespec.tv_sec]
mov rcx, [deltatime + timespec.tv_nsec]
call printf
add rsp, 8
;add rsp, 8
%endmacro
main:
push rbp
mov rbp, rsp
sub rsp, 16
xor rax, rax ; поскольку приходим сюда из компилятора, лучше обнулить
TIME_1_000_000
PRINT_DELTATIME nop_command
@ -108,6 +111,29 @@ main:
PRINT_DELTATIME ind_base_disp
; Под конец давайте посчитаем тактовую частоту на примере той же самой команды
rdtsc
mov [rbp - 4], edx
mov [rbp - 8], eax
mov rcx, 10000000000
mov rax, example
xor rbx, rbx
.loop:
inc byte [rax + rbx + 122]
loop .loop
rdtsc
sub eax, [rbp - 8]
sbb edx, [rbp - 4]
mov [rbp - 8], eax
mov [rbp - 4], edx
mov [rbp - 16], rsp
and rsp, -16
mov rdi, tick_count
mov rsi, [rbp - 8]
call printf
mov rsp, rbp
pop rbp
xor rax, rax ; сообщаем gcc, что все закончилось успешно
ret

View File

@ -9,3 +9,5 @@ section .data
ind_base: db '`inc byte [rax + rbx]`', 0
ind_base_disp: db '`inc byte [rax + rbx + 122]`', 0
tick_count: db 'Last command also took %lli ticks to complete', 10, 0