コールスタックの機能とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > コールスタックの機能の意味・解説 

コールスタックの機能

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/30 08:24 UTC 版)

コールスタック」の記事における「コールスタックの機能」の解説

前述のように、コールスタック第一目的以下の通りである。 リターンアドレスの格納 サブルーチン呼び出されたとき、戻るべき命令アドレスをどこかに記憶しておく必要があるスタック使ったリターンアドレスの格納他の方法にはない利点がある。第一に、各タスク対応するスタック持っているので、サブルーチン再入可能リエントラント)、つまり複数タスク同時に同じサブルーチン実行することが可能となる。第二に、再帰呼び出しが可能となるという利点がある。関数自身再帰的呼び出されたとしても、リターンアドレス呼び出される度に記憶しておかなければならないスタックを使うとこの機能自動的にサポートされる。 言語オペレーティングシステムハードウェア環境依存するが、コールスタックそれ以外機能も持つことがあるそのような機能として以下のものがある。 局所データ格納域 多くサブルーチン局所変数自動変数)の値を格納するメモリ領域を必要とする。局所変数とは実行中のサブルーチンでのみ使われる変数で、そのサブルーチンの処理が終われば値を必要としないこのためスタックトップ動かして空き領域作り局所変数利用することができる。これは動的メモリ確保比べると非常に高速行える。サブルーチン呼び出される度にスタック上の局所データ領域確保される点に注意されたい引数受け渡し サブルーチンには引数を必要とするものがある。引数呼び出し側のコード提供し、その引数コールスタック上に置くことは珍しくない一般に引数個数少なければプロセッサレジスタ引数受け渡し使われる。しかし、引数個数利用可能レジスタ数より多ければ何らかのメモリ領域を使わざるを得ないコールスタックそのような値の受け渡しには最適で、サブルーチン呼び出しの度に固有の引数渡されるに対してコールスタック呼び出しの度に固有の領域与えられる評価スタック 論理演算数値演算オペランド多く場合レジスタ置かれ処理される。しかし、式が複雑になるレジスタだけでは収まりきらなくなり何らかのメモリ領域が必要となる。そのようなオペランドのためのスタック逆ポーランド記法電卓似ている)は評価スタック (evaluation stack)と呼ばれコールスタック利用して実装することがある現在のインスタンスへのポインタ C++のようなオブジェクト指向言語では、メソッド呼び出しの際にthisポインタ引数と共にコールスタック格納するthisポインタ呼び出されるメソッド対応するオブジェクトインスタンス指している。thisポインタオブジェクト指向言語コンテキスト基本要素であり、現在のオブジェクトの持つプライベートデータへのアクセス提供するthisポインタオブジェクト指向プログラミングコールスタック結びつけるのであるルーチンの入れ子における静的スコープサポート PascalAdaといったプログラミング言語サブルーチン入れ子が可能であり、内側ルーチン外側ルーチンコンテキスト外側ルーチン引数局所変数)にアクセスできるようになっている。この静的入れ子はいくつ繰り返すことができ、関数中に別の関数定義しその中でさらに別の関数定義し……といったことが可能である。このため実装当たって呼び出され関数静的入れ子遡って外側フレームアクセスできる手段提供する必要がある一般に外側フレームへのポインタとしてこの参照実装し、これを「ダウンスタック・リンク」または「スタティック・リンク」と呼んで直前呼び出しルーチンとのリンク(ダイナミック・リンク)と区別する呼び出し側は定義上の外側ルーチンとは限らない)。例えば、内側ルーチン自分自身再帰呼び出しできるようになっている言語多く、同じルーチンスタックフレームコールスタック上にいくつも重なることがあり、それらが全て同じ外側ルーチンコンテキストへのスタティック・リンクを持つことになる。スタティック・リンクの代わりに外側スタックフレームへの参照集めてポインタ配列とする方式もある。この配列display呼びインデックス指定することで必要なフレームを得ることができる。バロース B5000ハードウェアでこれをサポートしており、32レベル静的入れ子使用可能だった他のリターンステータス リターンアドレスだけでなく、環境によってはサブルーチンから復帰する際に戻さなければならないハードウェアソフトウェアステータスがあるかもしれない例えば、特権レベル例外処理情報演算モードなどである。必要に応じてこれらもリターンアドレスのようにコールスタック格納される典型的なコールスタックリターンアドレス局所データ引数格納する(これを「コールフレーム」と呼ぶ)。環境によってはコールスタックの機能に差異がある。例えFORTH言語では、コールスタックにはリターンアドレス局所変数のみが格納され(これをリターンスタックと呼ぶ)、引数別のデータスタックに格納される多くFORTH実装では浮動小数点数引数格納するための第三スタック存在する

※この「コールスタックの機能」の解説は、「コールスタック」の解説の一部です。
「コールスタックの機能」を含む「コールスタック」の記事については、「コールスタック」の概要を参照ください。

ウィキペディア小見出し辞書の「コールスタックの機能」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「コールスタックの機能」の関連用語

コールスタックの機能のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



コールスタックの機能のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのコールスタック (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS