プログラムを調べるためにgdbを使用しています。アセンブリでは、コードは次のことを行っています。
cmp $0x5, %eax
ただし、の内容を調べると、文字列として調べると次のように%eaxなり\020\343\377\377\377\177ます。
アセンブリの$0x5とどのように\020\343\377\377\377\177比較されますか?
cmpeaxこの場合、はの値を定数と比較しています5。、が指す値eaxは、実際にはポインターであると思われる場合、定数とはまったく比較されません。
比較は減算によって行われます。つまり5、の値から平均が減算され、いくつかのフラグ(ドキュメントeaxによると、CF、OF、SF、ZF、AF、およびPF )が適切に設定されます。通常、命令の後には、比較の結果に応じてさまざまなアクションを実行するために、ある種の条件付き命令(多くの場合ジャンプ)が続きます。cmp
eaxポインタとして解釈するのではなく、の値を教えてeaxいただければ、もう少し情報を提供できるかもしれません。p $eaxまたはを使用して、gdbinfo registersでの値を取得できます。eax