У меня есть кусок кода, который я не понимаю, почему он использует инструкцию shl при создании массива с помощью malloc - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь понять этот фрагмент кода, который использует инструкции оболочки (SHL) при динамическом выделении памяти для одномерного массива в x86 (сборка MASM).Я хочу знать причину, по которой человек использует инструкцию SHL.

фрагмент кода

1 Ответ

1 голос
/ 14 апреля 2019

Сдвиг чего-либо влево один раз - это то же самое, что умножение на 2;и сдвиг чего-либо влево N раз аналогичен умножению на 2 ** N;но сдвиг обычно быстрее, чем фактическое умножение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...