スタックマシン

summary:

スタックマシン[stack machine]とは,命令の実行や演算処理において,スタック(後入れ先出し:LIFO)構造を基本とするコンピュータアーキテクチャである.従来のレジスタベースのマシンと異なり,スタックマシンは汎用レジスタをほとんど用いず,全てのオペランドと演算結果をスタック上で処理する.これにより命令セットは簡素化され,ハードウェア資源の節約やコンパイラ設計の単純化が可能となる.

このアーキテクチャでは,命令はポストフィックス記法[逆ポーランド記法]に類似した形式で評価される.たとえば,通常の中置記法における 3 + 4 は,スタックマシン上では 3 4 +のように記述される.数値 3 と 4 を順にスタックにプッシュし,+命令によってそれらをポップし加算した結果を再度スタックにプッシュするという動作が,スタックマシンの基本的な処理の流れである.この方式は演算の優先順位や括弧の解釈を不要にし,評価順序の明確さと処理の効率性を両立する.

スタックマシンの歴史は1960年代にまでさかのぼり,初期にはBurroughs B5000シリーズやケンブリッジCAPシステムなど,ハードウェアレベルでスタックを採用した設計が登場した.さらに1970年代から1980年代には,教育用途において仮想マシンとして設計された UCSD Pascal の P-Machineがが広く用いられた.P-Machine はスタックマシンの構造を採用しており,コンパクトで移植性の高い中間コードを生成することにより,多様なプラットフォーム上での Pascal プログラムの実行を可能とした.

特筆すべきは,スタックマシンの概念をそのままプログラミング言語の仕様にまで昇華させた存在としてのFORTHである.FORTHは1968年にチャールズ・ムーア[Charles H. Moore]によって設計されたプログラミング言語であり,構文・実行モデルともにスタックベースで構成されている.FORTHではすべての命令や構文がポストフィックス記法に従っており,プログラムはスタックへのプッシュ/ポップを明示的に操作することで構成される.また,そのインタプリタや仮想マシンもスタックベースで動作するため,FORTHはスタックマシンの原理を最も純粋な形で表現した言語体系とされる.

その後も,スタックマシンの思想は仮想環境において生き続けている.たとえば,Java仮想マシン[JVM]やWebAssembly[Wasm]といった現代的な仮想マシンも,内部的にはスタックベースの命令実行モデルを採用しており,安全性・移植性・効率性のバランスを実現している.

Mathematics is the language with which God has written the universe.





















サブワード Singer HIP Fivetran Airbyte NewSQL