jvm - Parrot 与其他虚拟机相比如何?

标签 jvm clr raku parrot

Parrot 是最初为 Perl 6 设计的虚拟机。

Parrot VM 提供了哪些技术功能可与竞争虚拟机(例如 Java Virtual Machine (JVM))相媲美。/Hotspot VMCommon Language Runtime (CLR)缺少?

最佳答案

以下答案写于 2009 年。另见此 2015 update by raiph .

为了扩展@Reed 并指出一些亮点,Parrot 的操作码远高于大多数虚拟机。例如,虽然大多数机器存储整数和浮点数,但基本寄存器是整数、数字、字符串和 Parrot Magic Cookie (PMC)。仅仅内置字符串是 JVM 的一个进步。

更有趣的是 PMC,有点像 JVM 的对象类型,但更具有可替代性。 PMC 是 all the other more complicated types 的容器你需要像数组、表、树、迭代器、I/O 等真正的语言。 PMC 和各种各样的内置操作意味着语言编写者的工作更少。 Parrot 并不回避实现语言的杂乱但必要的部分。

我的信息可能已过时,但我相信操作码是可插入的,您可以发布仅包含您的语言所需操作码的 Parrot VM。它们也将是可继承的,如果您的语言希望它们的数组与普通 Parrot 数组的工作方式略有不同,您可以将其子类化。

最后,Parrot 不仅可以用于汇编程序( PASM ),还可以用于稍微高级的语言, Parrot Intermediate Representation (PIR) . PIR 具有循环、子例程、局部变量和一些基本的数学运算和比较操作,这些都是人们在编程语言中期望的所有基础知识,而且不会离金属太远。

总而言之,Parrot 对希望 的语言设计者(由他们编写并为他们编写)非常友好。设计语言 并将尽可能多的实现留给其他人。

关于jvm - Parrot 与其他虚拟机相比如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1811048/

相关文章:

java - Opencv JNA&C++ FaceRecognizer导致JVM崩溃

c# - 什么是 HostProtectionAttribute,我们为什么要使用它?

regex - 是否可以在插入的正则表达式中进行捕获?

module - Raku 如何决定加载哪个版本的模块?

java - 对 4GB JVM 和 3GB 缓存进行适当的 JVM/GC 调优

java - 使用静态方法更改类以在 Java 中进行接口(interface)的二进制兼容性

assemblies - CLR 4.0 内联策略? (可能是 MethodImplOptions.NoInlining 的错误)

c# - 如何通过 C# 中的偏移量访问字段值

raku - Raku 在编译时执行哪些类型检查?将来可能会改变吗?

java - 使用 "invokedynamic"- 幕后发生了什么?