Diyelim ki, 3233 kelimelik iki 32 bit kayıt EAX
düşük 32 bit kelime ve EDX
RAX'e yüksek 32 bit kelime olarak koymak istiyorum. Bir yol bulmak zorunda:İki 32 bit yazmaç bir 64 bit'e nasıl taşınır?
shl rdx, 32
or rax, rdx
Bu yöntem biz ilk yüksek 32 bit kelime temizlemelisiniz daha biz bu shure değilseniz 32'den RAX
arasında 61'e bitleri 0'a olduğundan eminseniz çalışır gibi:
mov eax, eax //This instruction should clear the high 32 bit word of RAX
Bu en kısa yol mu?
Bu işlemi yapan tek bir asm x86-64 yönergesi var mı?
AFAIK daha kısa bir şey yok. Hedef kayıt bir xmm regsiter ise, iki 'pin' talimatlarını kullanabilir ve takas talimatından kaçabilirsiniz. – hirschhornsalz
@drhirsch: Neredeyse tüm Intel belgelerini kontrol ettim ve yararlı bir şey bulamadım. :) –
Evet, temizlemek için "xor eax, eax" ile küçük bir yer kaydedebilirsiniz, ancak olabildiğince kısa gibi görünüyor. –