オペランドスタックとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > オペランドスタックの意味・解説 

オペランドスタック

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/26 09:23 UTC 版)

オペランドスタック: operand stack)とは、スタックマシンなどの仮想機械が使用するオペランド用のスタックで、メモリ内の領域の1つ。スタックマシンでは、コールスタックと区別して、オペコードを実行する際にオペランド用に使用するスタックを用意する場合があり、これをオペランドスタックと呼ぶ。

Java仮想マシン

Java仮想マシンでは、コールスタックとして、オペランドスタックとは別の、スレッドごとに作られるJava仮想マシンスタック(Java Virtual Machine stack)に、フレーム(frame)と呼ばれる小分けされた領域がある[1]。オペランドスタックは、そのフレーム内の領域の種類の1つである。スタックの一種である。[2]

オペランドスタックはJava仮想マシンの機械語の命令(オペコード)から直接使用される。Java仮想マシンはスタックマシンであり、レジスタが無いため、オペランドスタックを作業領域に使って計算などを実行する。例えば、ローカル変数の int の値を2つ iload命令でオペランドスタックにプッシュし、iadd命令でその2つをポップし、加算する、というような使い方がされる。

オペランドスタック1つの領域サイズは32ビットで、long 型と double 型だけは2つ分のサイズ(64ビット)を使用する。

Javaクラスファイルのロード時チェックにより、オペランドスタックに積まれた時の型以外の使用をすること(float でプッシュした値を int として使用するなど)は一部の命令を除き禁止されている。

.NET

.NET共通中間言語ではオペランドスタックの事を評価スタック(evaluation stack)と呼んでいる。[3]

Python仮想機械

Python仮想機械ではオペランドスタックの事をインタープリタ・スタック(interpreter stack)と呼んでいる。[4]

関連項目

参照

  1. ^ 2.5.2. Java Virtual Machine Stacks - Chapter 2. The Structure of the Java Virtual Machine”. docs.oracle.com. 2024年3月26日閲覧。
  2. ^ 2.6.2. Operand Stacks - Chapter 2. The Structure of the Java Virtual Machine”. docs.oracle.com. 2024年3月26日閲覧。
  3. ^ ECMA-335 - Ecma International”. Ecma International. 2024年3月26日閲覧。
  4. ^ dis --- Python バイトコードの逆アセンブラ”. Python documentation. 2024年3月26日閲覧。



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

辞書ショートカット

すべての辞書の索引

「オペランドスタック」の関連用語

オペランドスタックのお隣キーワード
検索ランキング

   

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



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

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのオペランドスタック (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS