что делает инструкция movsbl?

Я искал в сети, но я не мог найти ясного примера, чтобы понять, что делает эта инструкция. Итак, если кто-то может дать пример об этом, это будет очень полезно для меня.

Перемещение со значком простирается от байта до слова. В синтаксисе Intel мнемоника этой команды MOVSX.

Компилятор AC может использовать эту инструкцию, когда переменную типа int8_t необходимо преобразовать в int , что происходит автоматически по арифметике и нескольким другим операциям (целая продвижение).

Поскольку эта инструкция записывает все 32 (или 64) бита регистра назначения, это позволяет избежать штрафов за производительность, которые могут возникнуть в результате записи только младших (или 16) битов регистра. Аналогичный набор инструкций позволяет расширять с нулевыми битами (MOVZX в синтаксисе Intel, MOVZst в синтаксисе AT & T (от размера s до размера t)).

Top web hit for movsbl – это страница , и если вы movsbl это говорит

 MOVSBL and MOVZBL * MOVSBL sign-extends a single byte, and copies it into a double-word destination * MOVZBL expands a single byte to 32 bits with 24 leading zeros, and copies it into a double-word destination Example: %eax = 0x12345678 %edx = 0xAAAABBBB MOVB %dh, %al %eax = 0x123456BB MOVSBL %dh, %eax %eax = 0xFFFFFFBB MOVZBL %dh, %eax %eax = 0x000000BB 

Похоже, это довольно ясный пример для меня. Для получения дополнительных примеров прочитайте следующую страницу.

Предполагая, что вы говорите о x86, команда MOVSBL расширяет байт (8 бит), представляющий подписанное число до 32-разрядного числа со знаком. Остальные 24 бита являются нулями или единицами в зависимости от знака, так что значение дополнения двух остается.

Значение, если у вас есть отрицательное число, верхние 24 бита будут равны 1 с, иначе они будут нулями.

Эквивалентом для беззнаковых чисел является MOVZBL, который всегда продолжается с 0s.

Предполагая, что это синтаксис сборки AT & T для IA32 (i386 / x86_64), это означает MOV с расширением знака от байта до длинного. То есть это эквивалентно MOVSX r32, r/m8 m8 см. 3-730 Vol. 2А .

  • Самая быстрая встроенная спин-блокировка
  • Заставить программу на x86?
  • Почему назначение целых чисел на естественно выровненной переменной атома на x86?
  • Самый быстрый способ вычисления 128-битного целого по модулю 64-разрядного целого числа
  • Ссылка на содержимое ячейки памяти. (режимы адресации x86)
  • Снижается ли производительность при выполнении циклов, чей счетчик uop не кратен ширине процессора?
  • об ассемблере CF (Carry) и OF (Overflow)
  • Как планируется x86 uops?
  • Что такое 0x10 в инструкции по сборке «leal 0x10 (% ebx),% eax» x86?
  • Относительная производительность команды x86 inc vs. add
  • Почему оставить «mov esp, ebp» в сборке x86?
  • Давайте будем гением компьютера.