6
假設我想將兩個32位寄存器EAX
作爲低32位字,將EDX
作爲高32位字放入RAX。 我已經找到一種方法:如何將兩個32位寄存器移動到一個64位?
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指令可以執行此操作?
AFAIK沒有什麼短。如果目標寄存器是xmm寄存器,則可以使用兩個'pinsd'指令並避免清除指令。 – hirschhornsalz 2011-12-20 20:04:22
@drhirsch:我檢查了幾乎所有的英特爾文檔,但沒有發現任何有用的東西。 :) – 2011-12-20 20:09:46
是的,你可以用一個「xor eax,eax」來節省一點空間來清除它,但看起來儘可能短。 – 2011-12-20 20:20:23