Я собирал (и разбирал) инструкцию BSWAP x64 с NASM и GAS, и обе собирали инструкцию BSWAP r15
как 490FCF
в шестнадцатеричном формате.Дизассемблеры также разбирают это на одну и ту же инструкцию.
Префикс REX для инструкции (49
), таким образом, имеет бит REX.W (бит 3) и бит REX.B (бит 0).Это прямо противоположно документации Intel, в которой говорится:
В 64-битном режиме размер операции по умолчанию для инструкции составляет 32 бита. Использование префикса REX в форме REX.R разрешает доступ к дополнительным регистрам (R8-R15) .Использование префикса REX в форме REX.W повышает скорость работы до 64 бит.
(выделение выделено)
Таким образом, согласно документации, бит REX.W и REXДолжен быть установлен бит .R (бит 2), а не REX.B, давая кодировку 4C0FCF
.
Мой вопрос: кто прав?Сборщики или Intel?