目录

parrot - 寄存器( Registers)

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

↑回到顶部↑
WIKI教程 @2018