たとえば、斧を押した場合、[SP] は斧の値または斧の後の単語を指しますか? また、リアルモードとプロテクトモードの違いはありますか? これは、Art of assembly book が、sp が最後にプッシュされたデータを指すように説明および説明しているためです。
質問する
21065 次
4 に答える
29
ウィキペディアはここに言います:
スタックは、暗黙的にデクリメント (プッシュ) およびインクリメント (ポップ) するスタック ポインターを使用して実装されます。この暗黙のスタック ポインタは、16 ビット モードでは SS:[SP]、32 ビット モードでは SS:[ESP]、64 ビット モードでは [RSP] としてアドレス指定されます。スタック ポインターは実際には、格納された最後の値を指します。そのサイズは、プッシュ/ポップ/コールのデフォルト幅に一致するように、プロセッサの動作モード (つまり、16、32、または 64 ビット) に一致すると想定されます。 /ret 命令。
これは、私の昔の記憶がそれが機能すると言っている方法でもあります。
于 2012-12-27T19:56:03.863 に答える
23
push eax
以下と同等です。
sub esp, 4
mov [esp], eax
したがって、プッシュ後、プッシュesp
された値のアドレスが保持されます。
于 2012-12-27T19:59:43.543 に答える
0
OPがこの質問をしている理由を理解していると思います。SP からの最初の変数が 4 バイトではなく 8 バイトなのはなぜですか?
いくつかの調査の後、次のことを示すこれを見つけました。
SP+0 は古い EBP SP+4 は古い EIP (命令ポインタ)
したがって、当然、最初のパラメータは SP+8 になります。
于 2015-08-23T18:36:15.403 に答える