Вы правы, sall $2, %eax
умножает eax
на четыре , т. Е. Сдвигает биты регистра eax
на две позиции влево.
Обратите внимание, что sal
и shl
на самом деле синонимы , тогда как sar
и shr
- нет.Нет никакого различия между со знаком и без знака для сдвига влево .
В вашем случае вы просто сдвигаете биты регистра в влево , подпись смещаемого операнда не имеет значения, поскольку старший бит (т. е. знаковый бит) не нужно интерпретировать как таковой, как в случае правое арифметическое смещение .