Сдвиг чего-либо влево один раз - это то же самое, что умножение на 2;и сдвиг чего-либо влево N раз аналогичен умножению на 2 ** N;но сдвиг обычно быстрее, чем фактическое умножение.
Для кода, который вы показали;это умножение n
на sizeof(int)
.Поскольку sizeof(int)
равно 4, это означает, что он может сдвигаться влево дважды (shl eax,2
) вместо выполнения (более дорогого) умножения.