global main extern printf %define CLOCK_REALTIME 0 ; struct timespec { time_t tv_sec; long tv_nsec; } struc timespec .tv_sec: resq 1 .tv_nsec: resq 1 endstruc section .note.GNU-stack ; чтобы не жаловался линкер section .bss start: ; uses timespec model times 2 resq 1 finish: times 2 resq 1 section .data fstring db "Operations took %ul seconds and %ul milliseconds", 10, 0 flen equ $-fstring section .text main: ; лично в моей системе time_t представляет из себя long int mov rax, 228 ; Системный вызов получения времени mov rdi, CLOCK_REALTIME mov rsi, start syscall ; insert your code here mov rcx, 20000 looper: mov rax, start loop looper mov rax, 228 mov rdi, CLOCK_REALTIME mov rsi, finish syscall ; считаем время для секунда и миллисекунд ; секунды mov rsi, [finish + timespec.tv_sec] sub rsi, [start + timespec.tv_sec] ; миллисекунды mov rdx, [finish + timespec.tv_nsec] sub rdx, [start + timespec.tv_nsec] mov rdi, fstring mov rax, 0 sub rsp, 8 call printf add rsp, 8 exit: mov rax, 60 mov rdi, 0 syscall