30得票10回答
为什么需要虚拟机?

我在阅读这篇问题,想了解Java虚拟机和.NET CLR之间的区别,Benji的答案让我想知道为什么首先需要虚拟机。 根据我对Benji解释的理解,虚拟机的JIT编译器将中间代码解释为实际运行在CPU上的汇编代码。原因是因为CPU通常具有不同数量的寄存器,并且根据Benji的说法,“一些寄存...

11得票6回答
有没有不使用虚拟机来开发Smalltalk的方法?

我正在学习Smalltalk。目前我正在使用Squeak,但是是否有一种不需要使用虚拟机(VMs)而是像集成开发环境(IDE)一样的方式来开发Smalltalk的方法呢?

7得票2回答
为什么在安卓系统中每个应用都有独立的虚拟机实例(Dalvik/ART)?

作为标题所述,为什么Android上的每个应用程序都有一个单独的VM(Dalvik/ART)实例?(需要它的原因) 如果Android操作系统选择了一个单一的VM运行所有应用程序的模型,会发生什么?

12得票3回答
对8位系统上lisp类语言的虚拟机感兴趣

我正在寻找适用于8位微处理器且支持动态语言的虚拟机软件。我希望使用虚拟机解决方案,因为从代码密度、可移植性以及可以留更多空间给更大的程序等方面,我看到了优势。 我的目标是在类似6502微处理器上运行完整的LOGO解释器,遵循“LOGO for the Apple II”语法。 我已经看到过...

16得票3回答
将虚拟机设计与其主要编程语言相匹配

作为一个副业的背景,我一直在阅读不同的虚拟机设计,其中JVM当然得到了最多的关注。我还看了BEAM(Erlang)、GHC的RTS(有点但不完全是VM)以及一些JavaScript实现。Python也有字节码解释器,但我没有读过太多相关内容。 我没有找到一个好的解释 为什么会针对特定语言做出...

11得票2回答
Java中数组内存使用开销过大的原因是什么?

在Java中,字符数据类型char使用2个字节表示。包含n个字符的char[]数组需要2n+24字节来表示。 通常情况下,存储包含n个对象(至少是原始类型)的数组需要额外的24字节开销。 为什么我们需要这额外的24个字节?它们如何被使用? 编辑(2015年7月2日):在评论中指出,在程序...

9得票3回答
PHP请求生命周期

好的,我相对于PHP VM的知识还比较简单,并且最近一直在思考一个问题。特别是,如何处理web应用程序的PHP请求生命周期。我发现了一篇文章(戳这里),给出了很好的解释,但我认为还需要更多的探究。 从文章所述,每次向服务器发送请求时,脚本都会被解析并执行!这听起来有些不可思议! 我正试图通...

8得票1回答
回溯正则表达式实现的优化技术

我正在尝试基于回溯法实现正则表达式匹配器,该方法在Exploring Ruby’s Regular Expression Algorithm中概述。编译后的正则表达式被翻译成虚拟机命令数组;对于回溯,当前命令和输入字符串索引以及捕获组信息在堆栈上维护。 在Regular Expression...

7得票1回答
将抽象语法树编译成汇编代码

我有一棵抽象语法树,需要将其转换为虚拟机的汇编代码。我不知道最好的方法是什么,所以开始使用一系列字符串模板。以下是一个伪代码示例,假设需要编译一个具有一个条件的简单 if 语句: std::string compile_if(Node* n) { std::string str = ...

26得票6回答
什么阻止了高效的Haskell虚拟机(例如JVM)的出现?

我一直在思考,除了开发工作量之外,是什么阻碍了像JVM或PyPy这样高效虚拟机的Haskell实现?是语言结构吗?我认为那些难以高效解释的语言(比如Python,非常动态),已经有不错的虚拟机了。 此外,如果没有任何障碍,STG是否是一个好的“字节码”目标,因为所有优化都是在Core上完成的...