Linux x64 Демонтаж: один вопрос с опцией movzwl


0

Быстрый вопрос относительно инструкции movzwl, которая не ведет себя так, как я ожидал.

здесь разобранном код:

movzwl (%rax),%eax 

Перед инструкцией, rax является 0x7fffffffe410 и точка 0x5 После обучения, я ожидал бы eax быть 0x5 (это так), но я бы не ожидал, что верхние биты rax быть очищены тоже ... Тем не менее, при отладке, rax значения 0x5 ...

Я думал, что movzwl будет очищать только верхние разряды eax, но не rax. Могли бы вы объяснить?

Благодарим вас за помощь!

enter image description here

  0

«Я думал, что ..»: Проверили ли вы официальную документацию Intel? 28 дек. 172017-12-28 12:31:28

1

Это несколько сложнее часть инструкции x64 набора и не упоминается в описаниях отдельных инструкций, но только как заметка на полях в разделе общего введения. Вот хороший ответ на него:

https://stackoverflow.com/questions/11177137/why-do-x64-instructions-zero-the-upper-part-of-a-32-bit-register