9得票5回答
虚拟机解释器——权衡更大的指令集和调度循环的性能优劣。

我正在开发一个简单的虚拟机,目前遇到了困难。 我的最初目标是使用一字节长的指令,在小循环和快速计算跳转分派中实现。但现实与此完全不同-256远远不足以覆盖带符号和无符号的8、16、32和64位整数、浮点数和双精度浮点数、指针操作、不同寻址组合等。一种选择是不实现字节和短整型,但目标是要创建一...

109得票3回答
为什么JVM基于栈而Dalvik VM基于寄存器?

我很好奇,为什么Sun决定将JVM基于堆栈实现,而Google决定使用寄存器实现DalvikVM? 我认为JVM无法假设目标平台上有一定数量的寄存器,因为它应该是跨平台的。因此,它将寄存器分配等工作延迟到JIT编译器中。(如果我错了,请纠正我。) 那么Android开发团队想:“嘿,这样效...

9得票6回答
编写虚拟机——如何生成格式良好的字节码?

我只是为了好玩在C语言中写一个虚拟机。这听起来很无聊,但幸运的是我在SO上,希望没有人会嘲笑我 :) 我编写了一个非常简单的虚拟机,可以读取(我自己编写的)汇编指令并执行操作。目前,我只有三个指令:add, jmp, end。一切进展顺利,实际上非常酷,可以输入行(类似于write_line...

36得票4回答
解释器 vs 编译器 vs 虚拟机

我有一个关于解释器、编译器和虚拟机(VM)的问题。 现在我知道解释器和编译器之间的区别,但是虚拟机与前两者有什么不同呢?使用虚拟机相比于解释器和编译器有哪些优缺点呢? 非常感谢。

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

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

7得票3回答
为什么Android需要一个虚拟机(DVM)?

虚拟机被用于在不同的操作系统上运行应用程序(Java编译代码生成与操作系统无关的.class文件,这些文件转换为字节码)。由于Android应用程序在相同的操作系统上运行(即Android),因此它不需要虚拟机(我可能错了)。那么为什么它需要Dalvik虚拟机呢?

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

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

15得票4回答
字节码设计?

我正在设计一门编程语言,可以编译到中间字节码。但是,我在设计字节码结构时遇到了很多问题。有没有人能提供关于如何用二进制表示程序的指导?或者是否有任何资源(最好是免费的)可供使用?目前找到的最接近的是Lua解释器字节码的说明。 编辑:更多信息:我正在实现自己的垃圾回收方案,它针对不可变性和并发...

80得票5回答
Java常量池的目的是什么?

我正在深入研究Java虚拟机规范。我一直在阅读在线的JVM内部书籍,但有一个令我困惑的抽象概念:常量池。以下是书中的摘录: 对于它加载的每种类型,Java虚拟机必须存储一个常量池。Constant Pool是该类型使用的常量的有序集合,包括文字(字符串、整数和浮点数常量)和对类型、字段...

10得票4回答
如何查找JVM对我的代码进行了哪些优化?

JVM(尤其是HotSpot VM)以运行时应用大量优化而闻名。 有没有办法查看某个代码片段,看看JVM实际上对其做了什么?