12

この質問を見ましたが、答えが見つかりませんでした..

では、 1 回または 2 回使用する代わりに、add esp, 4またはを使用することを好むのはなぜでしょうか。違い(パフォーマンス、安全性など)はまったくありますか、それとも個人的な選択の問題ですか?add esp, 8pop

4

3 に答える 3

22

popスタックadd esp, 4の一番上にあるものを以前のオペランドに保存するだけです。スタックにあるものが必要な場合は、おそらくpopよりも高速ですmov wherever, [esp]; add esp, 4が、単にスタックをクリアする必要がある場合は問題ありませんadd esp, 4

于 2011-05-05T21:19:36.860 に答える
2

一般に、pop命令はと同等ではありませんadd esp, N

popスタックからデータを削除し、それをレジスタに格納するために使用されます。また、スタックがどちらの方向に成長するかにも依存しませんが、通常は問題になりません。

スタックポインタを手動で加算または減算してもesp、削除されたデータはレジスタに保持されません。スタックから削除されるデータに対して何もする必要がないと仮定すると、おそらくより効率的です。

于 2011-05-05T21:08:06.350 に答える