この操作の意味を知りたいのですが?
Test EDX, 200
私は次DWORD
のような価値がありますEDX
:
1A1B1C00
するとtest EDX, 200
、JE
ジャンプします。なんで?EDX
と等しくありません200
。
Test EDX, 200
意味についてもっと知りたいです。
Aは、オペランドを変更せずにtest
実行します( et alAND
などの一部のフラグのみを変更します)。単純にテストしZF
(ゼロフラグ)、設定されている場合はジャンプします。je
ZF
その結果がであった場合Test EDX, 200
、値AND
はEDX
with0x200
に設定さZF
れ、に設定されます。あなたの場合、それは私たちに与えるでしょう:1
AND
0
0x1A1B1C00 AND 0x00000200 -> 0x00000000
0x0200
は2進数であるため0000 0010 0000 0000
、命令の目的は、Test EDX, 200
の値をテストしEDX
て9番目のビット(0から数えて右から9桁)がa0
または1
であるかどうかを確認し、ゼロの場合はジャンプすることです。
組み立て手順が何をするかを知るために、私はグーグルを使うことを勧めます。Googleでは、命令の名前(この場合test
は)とintel instruction
(Intel命令の場合)のように書くことができます。
上記のリンク先のGoogle検索の結果から、一部のサーバーには、命令の名前に従って名前が付けられたさまざまなx86アセンブリ命令用の個別のページがあることがわかります。
http://web.itu.edu.tr/kesgin/mul06/intel/instr/test.html
上にリンクされているウェブページにあるように:
TEST - Test For Bit Pattern
Usage: TEST dest,src
Modifies flags: CF OF PF SF ZF (AF undefined)
Performs a logical AND of the two operands updating the flags
register without saving the result.
たとえばcmpxchg
、他の命令が何をするかを知るために必要なのは、アドレス内の命令の名前を置き換えることだけです。したがって、次のようになります。
http://web.itu.edu.tr/kesgin/mul06/intel/instr/cmpxchg.html
最後に、Intelアセンブリに関する最終的な情報源は、Intel Software Developer Manualsであり、非常に便利で、PDF形式で無料で入手できます。