スタックマシン
読み:スタック-マシン
外語:stack machine
計算機やマイクロプロセッサーの設計モデルの一つで、メモリーがスタック構造になっているもの。
概要
記憶装置そのものがスタック構造であるものや、またはレジスターがスタック構造であるものなどをいう。
レジスターがスタック構造の場合、命令は暗黙のうちにスタックトップから必要数の値を取得して処理するため、オペランドを指定する必要がないことが多く、このため「0オペランド命令」などを作りやすい。
このためスタックマシンは命令が短くできるが、代わりにスタック操作の命令が必要になるため、処理に要する命令数は多くなる傾向にある。
特徴
x87
x86の場合、CPUはレジスターマシンであるのに対して、コプロセッサーとして提供されたFPUの8087は、スタックマシンとして設計された。レジスターは8レベルのスタック式であり、このため演算を逆ポーランド記法で記述できる利点があった。
またi486DX以降はCPUに内蔵されるようになったが、仕様は従来と変わらずスタックマシンのままである。
ただ、FPUがスタックマシンであることは人気が無かったらしく、あまり使われていなかったFPUレジスターを活用するために設計されたMMXのMMX用レジスターは、FPUレジスターを流用するものの命令体系はレジスターマシンとなっている。
新しいレジスターを追加したSSEも、やはりレジスターマシンとして設計された。
Java
Javaの仮想計算機(仮想マシン)は、命令体系が8ビットのスタックマシンとなっている。
一方で、Java言語を用いるAndroidの仮想計算機Dalvikは、16ビットのレジスターマシンとなった。
再検索