オウム-レジスター

現在のPerl5仮想マシンはスタックマシンです。値をスタックに保持することにより、操作間で値を伝達します。操作は値をスタックにロードし、必要なことをすべて実行して、結果をスタックに戻します。これは操作が簡単ですが、時間がかかります。

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 I1, 10
   set N1, 3.1415
   set S1, "Hello, Parrot"

すべてのParrotopsの形式は同じです。つまり、演算子の名前、宛先レジスタ、そしてオペランドです。