Как переместить два 32-битных регистра в один 64-битный?

Допустим, я хочу установить два 32-битных регистра EAX как младшее 32-битное слово и EDX как старшее 32-битное слово в RAX . Я нашел один способ:

shl   rdx, 32
or    rax, rdx

Этот метод работает только в том случае, если мы уверены, что биты с 32 по 61 из RAX равны 0. Если мы не уверены в этом, то сначала мы должны очистить высокий 32 битовое слово, например:

mov   eax, eax      //This instruction should clear the high 32 bit word of RAX

Это кратчайший путь?

Есть ли одна инструкция asm x86-64, которая выполняет эту операцию?

8
задан 眠りネロク 26 September 2018 в 15:40
поделиться