У меня есть следующая программа сборки, и в качестве своего рода теста я хотел бы посмотреть, как работает функция 1B-приращения. Как наиболее точно рассчитать это время?
SYS_EXIT = 60
LOOP_MAX = 1000000000
.globl _start
loop:
# do a billion increments
mov $0, %eax
_loop:
inc %eax
cmp $LOOP_MAX, %eax
jne _loop
ret
_start:
# start time
call loop
# printf("It took %.8f to run", end_time - start_time)
mov $0, %edi
mov $SYS_EXIT, %eax
syscall
clock_gettime
. - person Nate Eldredge   schedule 19.02.2021edx:eax
. Если вы хотите, чтобы это было в 64-битном регистре, вы можете сделатьmov %edx, %ecx ; shl $32, %rcx ; add %rax, %rcx
. Затем сделайте это снова после завершения цикла и вычтите. - person Nate Eldredge   schedule 19.02.2021perf stat
. - person Peter Cordes   schedule 19.02.2021*core* clock cycles
? - person David542   schedule 19.02.2021