📝 Parrot教程

13篇技术文档
  Parrot教程

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

Parrot是一种虚拟机,旨在有效地编译和执行用于解释语言的字节码。Parrot是为动态语言而设计的。 Parrot是Perl,Tcl,Ruby, Python等各种语言的目标。在本教程中,我们将学习使用Parrot for Perl编译器。本教程是为希望学习Parrot基础知识及其工作原理的用户而设计的。它说明了如何在Perl中使用Parrot。Parrot将改变您看到PERL的方式!先决条件本...

  Parrot-概述

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

当我们将程序输入常规的Perl中时,首先将其编译为内部表示形式或字节码;然后,该字节码将被馈送到Perl内部几乎独立的子系统中进行解释。因此,Perl的操作分为两个不同的阶段:编译为字节码和字节码的解释。这不是Perl独有的。遵循此设计的其他语言包括Python,Ruby,Tcl甚至Java。我们也知道有一个Java虚拟机(JVM),它是一个平台无关的执行环境,可以将Java字节码转换为机器语言并...

  Parrot-安装

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

在开始之前,让我们下载最新的Parrot副本并将其安装在我们的计算机上。ParrotCVS Snapshot中提供了Parrot下载链接。下载最新版本的Parrot并按照以下步骤进行安装:解压缩并解压缩下载的文件。确保您已经在计算机上安装了Perl 5。现在执行以下操作:然后,将询问您有关本地配置的一系列问题。您几乎总是可以为每一个输入回车/回车。最后,将提示您键入-make test_prog,...

  Parrot-指令格式

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

Parrot当前可以接受以四种形式执行的指令。 PIR(鹦鹉中间表示)旨在由人们编写并由编译器生成。它隐藏了一些底层细节,例如将参数传递给函数的方式。PASM(鹦鹉汇编)是PIR之下的一个级别-它仍然是人类可读/可写的,可以由编译器生成,但是作者必须注意诸如调用约定和寄存器分配之类的细节。 PAST(Parrot抽象语法树)使Parrot可以接受抽象语法树样式的输入-对于编写编译器的人很有用。以上...

  Parrot-垃圾收集

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

与Java虚拟机一样,Parrot也使您不必担心内存分配不足。鹦鹉提供垃圾收集。鹦鹉程序不需要显式释放内存。当不再使用已分配的内存(即不再被引用)时,将释放该内存。鹦鹉垃圾收集器会定期运行以照顾不需要的内存。...

  Parrot-数据类型

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

Parrot CPU具有四种基本数据类型:IV整数类型;保证足够宽以容纳指针。内华达州与体系结构无关的浮点类型。串抽象的,独立于编码的字符串类型。PMC标量。前三种类型很容易解释。最后一种-鹦鹉魔术饼干,稍微难懂。什么是PMC?PMC代表鹦鹉魔术饼干。 PMC代表任何复杂的数据结构或类型,包括聚合数据类型(数组,哈希表等)。 PMC可以针对在其上执行的算术,逻辑和字符串运算实现自己的行为,从而允许...

  Parrot-寄存器

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

当前的Perl 5虚拟机是堆栈机。它通过将操作之间的值保持在堆栈上来进行通信。操作将值加载到堆栈上,执行所需的任何操作,然后将结果放回到堆栈上。这很容易使用,但是很慢。要将两个数字加在一起,您需要执行三个堆栈推入和两个堆栈弹出。更糟糕的是,堆栈必须在运行时增长,这意味着仅在您不想分配内存时才分配内存。因此,Parrot将打破虚拟机的既定传统,并使用寄存器架构,更类似于真实硬件CPU的架构。这还有另...

  Parrot-操作

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

您可以执行多种操作。例如,我们可以打印出寄存器或常量的内容:上面的指令将导致寄存器I1的内容为:10我们可以对寄存器执行数学运算:我们甚至可以执行一些简单的字符串操作:...

  Parrot-树枝

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

没有流控制,代码会有些无聊。对于初学者,Parrot知道分支和标签。分支op等同于Perl的goto:它还可以执行简单的测试来查看寄存器是否包含真实值:为了进行比较,这是Perl中的样子:鹦鹉算子我们提供全方位的数字比较器:eq,ne,lt,gt,le和ge。请注意,您不能在不同类型的参数上使用这些运算符;您甚至可能需要在操作符中添加后缀_i或_n,以告诉您所使用的参数类型,尽管在您阅读本文时,汇...

  Parrot-编程示例

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

鹦鹉编程类似于汇编语言编程,您有机会在较低级别上工作。以下是编程示例列表,以使您了解Parrot编程的各个方面。经典的Hello世界!使用寄存器求和平方斐波那契数计算阶乘编译到PBCPIR与PASM经典的Hello世界!创建一个名为hello.pir的文件,其中包含以下代码:然后输入以下内容运行它:如预期的那样,它将显示文本“ Hello world!”。在控制台上,然后换行(由于\ n)。在上面...

  Parrot-快速指南

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

当我们将程序输入常规的Perl中时,首先将其编译为内部表示形式或字节码;然后,该字节码将被馈送到Perl内部几乎独立的子系统中进行解释。因此,Perl的操作分为两个不同的阶段:编译为字节码和字节码的解释。这不是Perl独有的。遵循此设计的其他语言包括Python,Ruby,Tcl甚至Java。我们也知道有一个Java虚拟机(JVM),它是一个平台无关的执行环境,可以将Java字节码转换为机器语言并...

  Parrot-有用的资源

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

以下资源包含有关Parrot的其他信息。请使用它们来获得有关该主题的更深入的知识。鹦鹉上的有用链接鹦鹉官方网站该站点正在维护与鹦鹉有关的更新信息。Perl 6 / Parrot邮件列表摘要本周在Perl 6中! (作者:马特·福尔斯)源代码鹦鹉的软件包和源代码追踪工具鹦鹉测试状态工具记录我们的测试范围鹦鹉问题追踪器鹦鹉错误追踪系统鹦鹉问题追踪器:摘要报告按年龄,平台等分类的故障单待办事项清单需要做...

  讨论Parrot

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

Parrot是一种虚拟机,旨在有效地编译和执行用于解释语言的字节码。鹦鹉是为动态语言而设计的。 Parrot是Perl,Tcl,Ruby, Python等各种语言的目标。在本教程中,我们将学习使用Parrot for Perl编译器。...