问题标签 [vm-implementation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 鹦鹉到底是什么?
我知道 Parrot 是一个虚拟机,但我觉得我并没有完全掌握它背后的想法。
据我了解,它是一个用于处理多种语言的虚拟机。这个对吗?
使用虚拟机而不仅仅是解释器有什么好处?
Parrot 到底在做什么让它如此重要?
language-agnostic - 寄存器与堆栈
使用基于寄存器的虚拟机与使用基于堆栈的虚拟机相比,究竟有哪些优缺点?
对我来说,基于寄存器的机器似乎更易于编程和更高效。那么为什么 JVM、CLR 和 Python VM 都是基于堆栈的呢?
.net - .NET 内存管理在托管代码中是否比在本机代码中更快?
我原以为托管代码中的内存分配是否比本机代码中的更快是明确的 -但似乎存在一些争议。由于没有对操作系统的上下文交换调用,虚拟机下的内存管理可能会更快,但后来我看到虚拟机本身需要定期调用操作系统以获得更多内存,并且它具有内存本身的管理开销而不是操作系统。
与其像我一样做出未经证实的断言,请提供指向支持您立场的参考资料的链接。
compiler-construction - 新的动态编程语言的后端选择?
我一直在开发一个 Smalltalk 变体,只是为了好玩,我想知道在针对后端时,stackoverflowers 的伙伴会选择什么。这些是我目前的考虑:
.NET、JVM:这两个 VM 主要用于静态类型语言,我认为很难针对像 smalltalk 这样的动态语言。
Python(作为源代码):似乎是最简单的方法。此外,如果我可以发出 Python 字节码会更好,但它没有像其他 VM 的 AFAIK 那样被很好地记录(需要挖掘 Python 的源代码以获取详细信息!)。
自制口译员:不可能,因为这不好玩:-)
LLVM、NekoVM、Parrot 是我正在检查的其他选项。您对此有何看法?
vm-implementation - 未来的虚拟机
我正在寻找一些关于未来虚拟机的资源(如 jvm 或 clr)
他们会是什么样子?他们会提供并发运行时、更强大的元编程模型吗?
我正在寻找文章、研究项目或纯粹的推测,任何将是有趣的读物。
因此,如果您有任何链接或意见,请分享。
vm-implementation - 简单的解释语言设计与实现
我需要一些资源来实现一个简单的虚拟机和解释语言。实用的东西是最有用的。我看过虚拟机实现这本书,发现它很旧,并不代表我今天看到的虚拟机。此外,如果有人知道一种相当简单的语言,那也很好。
pointers - 引用与指针的执行速度
我最近阅读了关于托管语言是否比本地语言(特别是 C# 与 C++)慢(或快)的讨论。一位参与讨论的人说,托管语言的 JIT 编译器将能够对引用进行优化,这在使用指针的语言中是不可能的。
我想知道的是在引用而不是指针上可以进行什么样的优化?
请注意,讨论是关于执行速度,而不是内存使用。
operators - 什么是原始的 Forth 运算符?
我对实现一个 Forth 系统很感兴趣,这样我就可以获得一些构建简单 VM 和运行时的经验。
在开始使用 Forth 时,通常首先了解堆栈及其运算符(DROP、DUP、SWAP 等),因此很自然地将这些视为原始运算符。但他们不是。它们中的每一个都可以分解为直接操作内存和堆栈指针的运算符。后来学习了 store (!) 和 fetch (@),它们可用于实现 DUP、SWAP 等(哈哈!)。
那么什么是原始运算符呢?哪些必须直接在运行时环境中实现,所有其他的都可以在其中构建?我对高性能不感兴趣;我想要一些我(和其他人)可以从中学习的东西。运算符优化可以稍后进行。
(是的,我知道我可以从图灵机开始,然后从那里开始。这有点极端。)
编辑:我的目标类似于引导操作系统或新编译器。我至少需要实现什么,以便我可以用这些原始构建块构建系统的其余部分?我不会在裸硬件上实现它;作为一项教育练习,我会编写自己的最小虚拟机。
assembly - x86 最快的虚拟机设计是什么?
我将在 x86 中实现一个虚拟机,我想知道什么样的设计会产生最好的结果。我应该专注于什么来挤出果汁?我将在 x86 程序集中实现整个虚拟机。
我没有太多说明,我可以选择它们的形式。这些指令以块的形式直接投射到 smalltalk 的语法中。我给出了我正在考虑的指令设计:
我正在考虑的那种虚拟机:
不要开始问我为什么需要另一个虚拟机实现。解释性程序不是您在需要时才拿起的库存东西。您在其他地方提出的大多数虚拟机都以性能成本为重,注重可移植性。我的目标不是可移植性,我的目标是性能。
之所以需要这个解释器,是因为 smalltalk 块最终不会以同样的方式被解释:
我需要来自解释例程的真正好处,那就是选择在哪里读取程序的上下文。当然,好的编译器应该在大多数情况下编译明显的情况,例如:'ifTrue:ifFalse' 或 'whileTrue: ',或列表示例。对口译员的需求不仅会消失,因为您总是可能遇到无法确定该块得到您期望的治疗的情况。
java - Java的虚拟机和CLR
作为对名为“MSIL 和 Java 字节码之间的差异”的问题的一种跟进?,Java虚拟机的工作方式与Java虚拟机的工作方式有什么(主要)差异或相似之处.NET 框架公共语言运行时 (CLR) 有效吗?
另外,是.NET 框架CLR 是“虚拟机”还是不具备虚拟机的属性?