У меня есть следующая программа сборки NASM, которая длится около 9,5 секунд:
section .text
global _start
_start:
mov eax, 0
mov ebx, 8
loop:
inc dword [esp + ebx]
inc eax
cmp eax, 0xFFFFFFFF
jne loop
mov eax, 1
mov ebx, 0
int 0x80
Но если я заменил [esp + ebx]
на [esp + 8]
(такое же место памяти, что и ebx = 8) или даже просто [esp]
, он запустится через 10,1 секунды...
Как это возможно? Не проще [esp]
вычислить процессор, чем [esp + ebx]
?