コードが表示されますがpush ecx
、その目的がわかりません。ecx の値を別のものに変更しますか?
質問する
8394 次
1 に答える
14
ecx
の値をスタック にプッシュします。ecx
x86 CPU レジスタであり、一定量のビット (rcx
最近の x86 CPU では 32 または 64 (当時) と呼ばれる) の値を保持できます。
コール スタックはスタック フレームに分割されます。関数が呼び出されたときにスタック フレームが作成され、関数に渡されたパラメーターがスタックにプッシュされてから、関数が実行されます。push
関数の実行中は、とを使用してローカル関数変数もスタックに格納されますpop
。 スタックに何かをpush
置き、最後にスタックに置かれたものを取り、元に戻します。 pop
スタックをプレートのスタックのように想像する必要があります。1 つを上に置き (押して)、同じものをもう一度離して (ポップ)、下にある次のプレートに到達することができます。
現在実行中の関数につながった関数はすべてこのスタック上にあり、必要に応じて現在の関数スタック フレームの「下」に配置されます。現在の関数が戻ると、スタックからポップされ (スタック フレームが破棄され)、呼び出し元の関数は中断したところから続行できます。
この説明のために、いくつかのビットを単純化しました。
于 2012-09-13T22:07:37.890 に答える