Parrot-registers
提供:Dev Guides
オウム-登録
現在のPerl 5仮想マシンはスタックマシンです。 スタックに値を保持することにより、操作間で値を通信します。 オペレーションは値をスタックにロードし、必要なことは何でも行い、結果をスタックに戻します。 これは簡単に使用できますが、時間がかかります。
2つの数値を加算するには、3つのスタックプッシュと2つのスタックポップを実行する必要があります。 さらに悪いことに、スタックは実行時に拡大する必要があります。つまり、割り当てたくないときにメモリを割り当てる必要があります。
そのため、Parrotは仮想マシンの確立された伝統を破り、実際のハードウェアCPUのアーキテクチャにより近いレジスタアーキテクチャを使用します。 これには別の利点があります。 ソフトウェアCPU用のレジスタベースCPU用のコンパイラーとオプティマイザーの作成方法に関する既存の文献をすべて使用できます!
Parrotには、32のIVレジスタ、32のNVレジスタ、32の文字列レジスタ、32のPMCレジスタの各タイプの専門レジスタがあります。 Parrotアセンブラでは、これらはそれぞれI1 … I32、N1 … N32、S1 … S32、P1 … P32という名前です。
次に、いくつかのアセンブラを見てみましょう。 これらのレジスタは、set演算子で設定できます。
set I1, 10
set N1, 3.1415
set S1, "Hello, Parrot"
すべてのParrot opの形式は同じです。演算子の名前、デスティネーションレジスタ、そしてオペランドです。