私はアセンブリ言語プログラミングに非常に慣れていません。現在、バイナリから生成されたアセンブリ言語を読み取ろうとしています。走ってきた
test %eax,%eax
またはtest %rdi, %rdi
、などなど。これが何をするのか、私は非常に混乱しています。値が%eax, %eax
同じではありませんか?それは何をテストしていますか?操作を行っていることをどこかで読みましたAND
.....しかし、それらは同じ値であるため、単に返され%eax
ませんか?
以下は、この使用法を見つけた 1 つの例です。
400e6e: 85 c0 test %eax,%eax
400e70: 74 05 je 400e77 <phase_1+0x23>
je
比較する 2 つの値が等しい場合にジャンプする と思ったのですが……そうですね%eax
、それ自体、どのような状況でジャンプしないのでしょうか?
プログラミング初心者なので、どなたか教えていただけるとありがたいです。ありがとう!