Parrot - 登记册

当前的Perl 5虚拟机是一台堆栈计算机.它通过将操作保持在堆栈上来传递操作之间的值.操作将值加载到堆栈上,执行他们需要执行的操作并将结果放回堆栈.这很容易使用,但速度很慢.

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

因此,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操作都具有相同的格式:操作符的名称,目标寄存器以及操作数.