答えて
を使用して、以下の組立作業を書き換えることができます方法はあります。ただ、eax
をゼロにし、その後ax
設定:
XOR EAX, EAX
MOV AX, [short_temp]
あなたがhere言ったよう[EAX]
から単語を取得したい場合は、単に事前にいくつかの他のレジスタへのアドレスを格納します。
MOV EBX, EAX
XOR EAX, EAX
MOV AX, [short_temp]
や、場合にそれができない、AND
を使用して@fuz proposedのようにしてくださいとEAX
の上位16ビットをクリア:
MOV AX, [EAX]
AND EAX, FFFFh
movzx
を避ける必要はありません。 EAXのような32ビットレジスタが利用可能な場合、コードは386以降で実行されているので、movzx
もサポートされています。
Intel CPUでこれを行うのが最も効率的な方法です。 movzx r32, [memory]
は、ALU操作なしで、ロード・uopにデコードします。待ち時間は通常の負荷(IIRC)と同じなので、ゼロ拡張は負荷ユニットによって自由に行われます。
AMD BulldozerファミリのCPUの場合、movzx
は常にALUポート(メモリオペランドの場合はロードポート)を使用するため、ワードロードを使用する前に理論的にはEAXをxor-zeroより高速にすることができます(@ Downvoterの答え)。これにより、コードサイズが大きくなり、フロントエンドがデコードするためのm-opsが増えるという代償を払って、負荷使用のレイテンシを1サイクル低くすることができます。
部分的なレジスタ書き込み(AX)の後にEAXを読み込むため、また別のサイクルのレイテンシを追加する別個のALU操作であるため、AXへのワードロードを実行してからand eax, 0xFFFF
のようなその他の提案が明らかに悪いです。 (xor-zeroing avoids the partial-register penalty、Intel P6ファミリのCPUでも)
- 1. これをDataGridviewでどうやって行うことができますか?
- 2. エリクシール - doctestでエイリアスをどうやって使うことができますか?
- 3. この関数はPythonでどうやって書くのですか?
- 4. これをPythonでどのように書くことができますか?
- 5. スプライトの速度をどうやって得ることができますか?
- 6. Python - 評判を失うことなくヘルプやガイダンスをどこで聞くことができますか
- 7. opencart:create_sidエラーです。どうやって売ることができますか?
- 8. どうやってカードを積み重ねることができますか?
- 9. どうやってアキシャス結果を得ることができますか?
- 10. アイスクリームサンドイッチのレイアウトはどうやって得ることができますか?
- 11. Pythonの__builtins__ソースコードはどうやって見ることができますか?
- 12. AngularJSを使ってコメントを書くことができます。
- 13. ゲレンベントでは、始まったすべてのグリーンレットをどうやって殺すことができますか?
- 14. どうやって別のモーダルを名前で開くことができますか?
- 15. ここで焦点がどこにあるのか知っているので、どうやってそこに行くのか分かりますか?
- 16. JavaとAndroidをScalaで作ったコアはどうやって使うことができますか?
- 17. この整数の配列をどうやって逆にすることができますか?
- 18. これらの要素をCSSでどうやって埋めることができますか?
- 19. 私はrabbitmqとnodejsを使ってどうやって作業をすることができますか?
- 20. Ruby - nokogiriを使って書くことができません
- 21. どうやってIntelliJの途中にToolWindowを置くことができますか?
- 22. Symfony/Doctrine - このコードをどうやって象徴することができますか?
- 23. Android foursquare:チェックインが完了したかどうかはどうやって知ることができますか?
- 24. これをどうやってやりますか? Java継承
- 25. Cプログラムのどこにでもプリプロセッサディレクティブを書くことができますか?
- 26. カスタムドローイングはどうやってマスクを使って行うことができますか?
- 27. 飛行機にこのPNGをどうやって手に入れることができますか?
- 28. どうやってawkにループを書くのですか?
- 29. どのようにしてこの種のforループをbashシェルスクリプトで書くことができますか?
- 30. 私は出力フォーマットをどこでうまくやっていますか?
非効率的ではあるが、2つの_mov_命令を使用できます。 'mov eax、0'' mov ax、[short_temp]'です。あなたの質問が文字通りに解釈される必要がない(すなわち、_only_ movを使用する)場合、より良い方法があります。 –