X86: Что означает инструкция movsxd rdx, edx? - PullRequest
1 голос
/ 12 июня 2019

Я играл с Intel MPX и обнаружил, что он добавляет определенные инструкции, которые я не мог понять.Например, (в формате Intel):

movsxd rdx,edx

Я нашел это , в котором говорится об аналогичной инструкции - MOVSX.

Исходя из этого вопроса, моя интерпретацияэтой инструкции является то, что он принимает двойной байт (поэтому есть d в movsxd), и он копирует его в регистр rdx (в двух младших байтах) и заполняет остальные знаком этого двойногобайт.

Верна ли моя интерпретация (я думаю, что ошибаюсь)?Если нет, скажите, пожалуйста, что происходит?

1 Ответ

3 голосов
/ 12 июня 2019

Ваш код 64-битный.Если вы посмотрите руководство по архитектуре набора команд (ISA) для MOVSXD, то 64-битный вариант определяется как:

 MOVSXD r64, r/m32       Move doubleword to quadword with sign-extension.

Этоинструкция в 64-битном коде, которая принимает 32-битный регистр или адрес в 32-битное значение и перемещает его знак, расширенный в 64-битный регистр.Расширение знака принимает значение самого старшего бита (знакового бита) источника и использует его для заполнения всех старших битов пункта назначения.

movsxd rdx,edx рассматривает бит 31 (самый старший бит) EDX и устанавливает старшие 32 бита места назначения в это значение и копирует младшие 32 бита как есть.Если бит знака установлен в EDX , то старшие 32 бита 64-битного регистра будут установлены в 1. Если бит знака очищен, старшие 32 бита RDX будут0.

В качестве примера предположим, что EDX имеет значение 0x80000000.Бит 31 равен 1. Как число со знаком -2147483648.Если вы сделаете movsxd RDX, EDX, значение в RDX будет 0xFFFFFFFF80000000.В качестве 64-разрядного значения со знаком, которое все еще представляет -2147483648.

Если EDX было 0x7fffffff (значение со знаком +2147483647) с битом 31, равным 0, значение в RDX был бы 0x000000007fffffff, который все еще представляет номер со знаком +2147483647.Как вы можете видеть, расширение знака сохраняет бит знака в старших битах расширенного регистра, так что сохраняется подпись места назначения.

...