1

コンパイラが生成したアセンブリコード(x86_64)を調べていたところ、次のように変位がゼロの命令がほとんど見つかりませんでした..

     movzbl 0x0(%rbp),%eax

このような 0x0 置換の背後にある理由は何でしょうか? (私はアセンブリが初めてです。すでに議論されている問題がある場合は、リンクを教えてください。)私の理解では、上記の命令はゼロ拡張 rbp+(0x0) を eax にコピーします


編集:私はそれを説明するリンクを見つけまし

ありがとうございました..!

4

1 に答える 1

4

という意味movzx eax, byte [rbp + 0]です。

に含まれるアドレスのメモリ オペランドのエンコードはありません(e|r)bpが、(e|r)bp + constant. したがって、その定数に 0 を指定して、 のアドレスから 1 バイトを抽出しますrbp

于 2012-09-23T10:25:55.033 に答える