x86アセンブリにおけるcmove命令の目的は何ですか? 質問する

x86アセンブリにおけるcmove命令の目的は何ですか? 質問する

実行ファイルを逆アセンブルしているときに、cmove命令に遭遇しました。インターネットで既に検索しましたが、条件付き移動であり、ソースと宛先が等しい場合にmov発生するということしかわかりません。オペランドを変更しないのに、なぜそれが必要なのかまだ理解していません。その目的は何ですか?

ベストアンサー1

命令CMOVccはソースと宛先を比較しません。以前の比較のフラグ (またはフラグを設定するその他の操作) を使用して、移動を実行するかどうかを決定します。(インテルマニュアル

例:と が等しい場合、これedxは にコピーされます:ecxeaxebx

cmp eax, ebx
cmove ecx, edx

これは以下と同じことを行います:

cmp eax, ebx
jne skip
  mov ecx, edx
skip:

おすすめ記事