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の形式は同じです。演算子の名前、デスティネーションレジスタ、そしてオペランドです。