1. ホーム
  2. c

[解決済み】LEALアセンブリ命令は何をするのですか?

2022-01-30 07:50:09

質問内容

との違いについて、少し混乱しています。

leal -4(%ebp), %eax       

そして

movl -4(%ebp), %eax

どなたか説明してください。

どのように解決するのですか?

LEA (ロード・エフェクティブ・アドレス) を計算するだけです。 アドレス のオペランドを参照し、実際にそれを参照解除するわけではありません。 ほとんどの場合、例えば配列のインデックス付けのための乗算と加算を組み合わせたような計算を行うだけです。

この場合、単純な数値の引き算をしています。 leal -4(%ebp), %eax に代入するだけです。 %eax の値をレジスタに登録します。 %ebp - 4 . これは、1つの sub 命令で、ただし sub は、送信先が送信元の1つと同じであることが必要です。

は、その movl のメモリ位置にアクセスします。 %ebp - 4 に格納し、その値を %eax .