REX.B переопределяет работу с инструкцией MOVSS? - PullRequest
11 голосов
/ 30 января 2011

Я генерирую следующую инструкцию для 64-битного x86:

41 F3 0F 10 46 10       movss   XMM0,014h[R14]

К сожалению, это вызывает ошибки в этой строке. GDB разбирает его как:

0x0000000000402054 <+320>:   rex.B
0x0000000000402055 <+321>:   movss  0x14(%rsi),%xmm0

Обратите внимание, что переопределение rex.B не распознается, и индексом является RSI вместо R14.

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

objdump также не может распознать его как допустимую инструкцию:

41                      rex.B
f3 0f 10 46 10          movss  0x10(%rsi),%xmm0

Что здесь происходит?

1 Ответ

14 голосов
/ 30 января 2011

Наконец, я понял это. Байт rex идет вторым для этой инструкции, например:

F3 41 0F 10 46 10
...