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 操作都具有相同的格式:运算符的名称、目标寄存器,然后是操作数。

广告