のは、私は2つの32ビットがEAX
などの低32ビット・ワードとRAXにEDX
として高い32ビット・ワードを登録置きたいとしましょう。 私は1つの方法を見つける必要があり:2つの32ビットレジスタを1つの64ビットに移動するには?
shl rdx, 32
or rax, rdx
この方法では、我々は我々が最初に高い32ビット・ワードをクリアする必要がありますよりも、我々はそれをSHUREされていない場合は32からRAX
の61ビットが0であることが確実な場合にのみ機能しますたとえば:
mov eax, eax //This instruction should clear the high 32 bit word of RAX
これは最短の方法ですか?
この操作を実行する単一のasm x86-64命令はありますか?
は、私の知る限り短い何もありません。ターゲットレジスタがxmm regsiterの場合、2つの 'pinsd'命令を使用し、クリア命令を避けることができます。 – hirschhornsalz
@drhirsch:私はほとんどすべてのインテルのドキュメントをチェックしましたが、役に立たないものは何も見つかりませんでした。 :) –
うん、あなたはそれをクリアする「のXOR EAX、EAX」に少しスペースを節約することができるかもしれないが、それはそれができると同じくらい短いようです。 –