仮想マシンのスタックとスタックフレーム間の起源と関係

背景

なぜこの概念を作成することは明らかではない、Java仮想マシン・スタックおよびスタックフレームの一部について話しました、この本「Java仮想マシンの深い理解」を参照してください、このメモリモデルの目的はソースが何であるか、あるされているものがあり、この本はしませんでした拡張オープン明らかであり、この概念は便利です理解するために概念の起源を理解しています。

それは、仮想マシンのスタックとスタックフレームの起源については、これに来るときオンラインいくつかの記事に何の予備知識を検索していない、あなたは、このYouTubeの動画を見ることができます:プロシージャ、ビデオ3:スタックベースの言語

バー、ハードウェア/ソフトウェア・インターフェース・クラスが有名で、ビデオに属し、非常に明らかにしました。

この記事では、ビデオの組み合わせである彼の理解、深い印象と組み合わせてノートを行います。

スタックベースの言語

目的:プログラミング言語のほとんどで再帰をサポートすることを可能にするには、メソッド自体を実装するために再帰呼び出しと呼ばれている再帰関数のすべてのトラックを維持する必要があり、我々は、各再帰呼び出しの状態を保存する方法が必要です。など、含まれています:

引数、ローカル変数、戻りポインタ。

スタックフレーム

スタックと呼ばれるフレームに割り当てられたスタックフレーム

私たちは関数を呼び出すとき、私たちはすべてのこれらの状態のためのスペースを作成するには、スタックポインタ(メモリ)をアドレス指定することで、それのための新しいフレームを作成します。

州:ローカル変数、関数の引数。INFOMATIONを返します。一時的なスペース。

スタックベースの言語は、JavaやCメソッドがスタック言語で使用されているかどうか、コンセプトスタック言語を記述しています。

スタック・フレーム - VMスタックは、スレッドのスタック内の対応する要素にスレッド方法です。

スタック・フロー分析をプッシュ

メソッドの各実装では、この方法では、対応するスタックフレームのために作成され、そして実行する仮想マシン--Javaスレッドスタックコンテナへの大きなプッシュは、スタックの外にポップアップ表示されます。

スタックの収集方法は、対応する鎖フレーム

サブメソッド複数の方法であって、方法は、コールチェーンに対応する、親最初の方法は、端部が押圧され、実行スタックを開始し、その後、サブメソッド、親メソッドの上部にスタック圧を行います。この方法はまた、自身のサブサブメソッド、同じようにある場合、サブサブサブメソッドアプローチの上面に押し付け。親メソッドを実行する最後のreturn文、メソッドのスタックフレームに対応するチェーンの一連のスタックが完了するまで、チェーンの端まで、スタック最深サブ法から一つずつ、次いでスタックプロセスの次の層、次いで、メソッドを呼び出します。

ます。https://juejin.im/post/5cfddb6b6fb9a07ee85c1e42で再現

おすすめ

転載: blog.csdn.net/weixin_34327761/article/details/93174426