0

これは本当に理論的な質問です。私の例ではCを使用しますが、言語はそれほど重要ではありません。

スタック上にたくさんの変数を作成するとしましょう

int x0 = 0;
int x1 = 1;
.
.
.
int x100 = 100;

ここで、x0を呼び出します。スタックはLIFOなので、x0がフェッチされている間、x100、...、x1は一時的にどこに保存されますか?つまり、レジスターに配置する必要はないのでしょうか。もしそうなら、単に十分なレジスタがありません。カフェテリアトレイの標準的な例えを使用すると、一番下のトレイに到達しようとすると、3つのスタックがあり、「ハノイの塔」を実行できない限り、他のトレイを取得する間、多くの人が他のトレイを保持する必要があります。 " 解決...

明らかに、この質問は、スタックとそれがどのように機能するかについての私の無知を示​​しています。前もって感謝します。

4

2 に答える 2

0

そのレベルの粒度のスタックではありません。

スタックはスタックフレームを格納します。各スタックフレームには、ローカル変数のセットが格納されます。もちろん、これらの変数には、一定時間でアクセスできます(スタックポインターからのオフセットによって)。

于 2012-08-05T11:39:03.220 に答える
0

スタックの最上位は単なるメモリアドレスであるため、オフセットを使用してアクセスできます。そうは言っても、これはあなたのコードを非常に壊れやすくします。

LIFOの要点は、次に必要な値があるという最後の値です。したがって、この例では、それらを逆の順序でプッシュするか、すべてを含む構造を定義してプッシュします。スタックへのアドレス。

于 2012-08-05T12:27:06.610 に答える