📜  Parrot-寄存器

📅  最后修改于: 2020-11-03 16:06:45             🧑  作者: Mango


当前的Perl 5虚拟机是堆栈机。它通过将操作之间的值保持在堆栈上来进行通信。操作将值加载到堆栈上,执行所需的任何操作,然后将结果放回到堆栈上。这很容易使用,但是很慢。

要将两个数字加在一起,您需要执行三个堆栈推入和两个堆栈弹出。更糟糕的是,堆栈必须在运行时增长,这意味着仅在您不想分配内存时才分配内存。

因此,Parrot将打破虚拟机的既定传统,并使用寄存器架构,更类似于真实硬件CPU的架构。这还有另一个优点。我们可以使用所有现有文献,了解如何为我们的软件CPU编写基于寄存器的CPU的编译器和优化器!

鹦鹉具有每种类型的专业寄存器: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都具有相同的格式:运算符的名称,目标寄存器以及操作数。