【问题标题】:How does language design influence VM and bytecode design?语言设计如何影响 VM 和字节码设计?
【发布时间】:2018-04-25 17:29:32
【问题描述】:

例如,C# 和 VB.NET 的设计如何影响 CIL 的发展(反之亦然)? Java 和 JVM 呢? PHP 的性质如何影响 HHBC/HHVM、Perl 和 Parrot、Smalltalk 和各种实现的 VM 的开发?

【问题讨论】:

    标签: language-design vm-implementation


    【解决方案1】:

    如果设计人员愿意,语言设计会影响虚拟机。一些虚拟机比其他虚拟机更独立。比如Java没有多重继承,JVM也没有。

    【讨论】:

      【解决方案2】:

      通常,语言机器(例如 Java 虚拟机或 .NET CLR)将密切反映其设计所针对的语言(JVM 为 Java,CLR 为 C#)的要求。

      例如,编译器需要原始 JVM v1.0 中的几乎所有 Java 字节码。有人可能会建议 JavaC 编译器作者的需求是由 JVM 作者按需提供的。 (这是一个小团队,所以可能是同一个人。)

      CLR 有点不同,因为除了 C# 之外,他们还加入了一些东西来支持假 C++ 语言,这需要至少 3 个额外的操作码 (IIRC)。尽管如此,CLR 的设计基本上只是为了支持 C#。

      分析 Android Davlik 引擎很有趣,因为它被设计为 JVM-but-without-using-JVM-byte-codes 引擎。 (它也是基于寄存器的,而不是基于堆栈的。)

      在某种程度上,主要决定变成了:引擎是低级图灵完整机(类似于软件 RISC 机器),还是引擎的原始语言(IL)是否只是其主要语言的二进制形式源代码语言。前者更像 WASM(可以说是通用的),而后者更像 JVM 和 CLR 规范。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        • 2013-09-18
        • 2011-04-30
        相关资源
        最近更新 更多