Let's say that I want to put two 32 bit registers EAX as low 32 bit word and EDX as high 32 bit word into RAX.
I have found one way:
shl rdx, 32
or rax, rdx
This method works only if we are sure that bits from 32 to 61 of RAX are 0. If we are not sure about that, then we must first clear the high 32 bit word, like:
mov eax, eax //This instruction should clear the high 32 bit word of RAX
Is this the shortest way?
Is there a single asm x86-64 instruction that does this operation?
Perhaps this is a tad better:
shl rax,32
shrd rax,rdx,32
Does not assume that high dwords are zero.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With