У меня есть следующая программа сборки 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]?