-6

コードが表示されますがpush ecx、その目的がわかりません。ecx の値を別のものに変更しますか?

4

1 に答える 1

14

ecxの値をスタック にプッシュします。ecxx86 CPU レジスタであり、一定量のビット (rcx最近の x86 CPU では 32 または 64 (当時) と呼ばれる) の値を保持できます。

コール スタックスタック フレームに分割されます。関数が呼び出されたときにスタック フレームが作成され、関数に渡されたパラメーターがスタックにプッシュされてから、関数が実行されます。push関数の実行中は、とを使用してローカル関数変数もスタックに格納されますpopスタックに何かをpush置き、最後にスタックに置かれたものを取り、元に戻しますpop

スタックをプレートのスタックのように想像する必要があります。1 つを上に置き (押して)、同じものをもう一度離して (ポップ)、下にある次のプレートに到達することができます。

現在実行中の関数につながった関数はすべてこのスタック上にあり、必要に応じて現在の関数スタック フレームの「下」に配置されます。現在の関数が戻ると、スタックからポップされ (スタック フレームが破棄され)、呼び出し元の関数は中断したところから続行できます。

この説明のために、いくつかのビットを単純化しました。

于 2012-09-13T22:07:37.890 に答える