0

私は次の質問をしなければなりません。

与えられた関数は次のとおりです。

show(int a, int b) 
{
    int v1;
    int v2;
}

a と b はパラメーターです。v1 と v2 はローカル変数です。a、b、v1、v2、戻りアドレスの古いフレームポインターがどこにあるかが明確なスタックを描画します。また、上位および下位のスタック アドレスがどこにあるかを示します。

私が十分に明確であることを願っています。

編集:

私が今持っているものは次のとおりです。

v2      <-- SP
v1
prevLV  <-- LV
Ra
a
b
4

1 に答える 1

0

JVMの実装に依存するため、明確な図を描くことは困難ですが、現在の状況が正しくない可能性はほとんどありません。

Javaはargsとtempsを区別しないため(iloadなどのバイトコードを参照)、メモリ内に並べて表示するか、誰かが呼び出し元の保留中のスタックから呼び出し先にそれらをコピーする必要があります。フレーム構築時(これは高価になる傾向があります)。

于 2012-07-16T08:28:06.250 に答える