x86-64 умножение сборки на 4 - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь найти альтернативу использованию imull и поэтому задаю следующий вопрос:

Будет ли sall $2, %eax иметь такой же эффект на% eax, как leal 0(,%eax,4), %eax, что должно быть умножением на 4 длябыть точным?

1 Ответ

0 голосов
/ 24 января 2019

Вы правы, sall $2, %eax умножает eax на четыре , т. Е. Сдвигает биты регистра eax на две позиции влево.

Обратите внимание, что sal и shl на самом деле синонимы , тогда как sar и shr - нет.Нет никакого различия между со знаком и без знака для сдвига влево .

В вашем случае вы просто сдвигаете биты регистра в влево , подпись смещаемого операнда не имеет значения, поскольку старший бит (т. е. знаковый бит) не нужно интерпретировать как таковой, как в случае правое арифметическое смещение .

...