153得票5回答
Java虚拟机和CLR

作为对题目《MSIL和Java字节码有何不同?》的某种跟进,Java虚拟机如何工作与.NET Framework公共语言运行时(CLR)如何工作有哪些主要区别或相似之处?同时,.NET Framework CLR是否是一台“虚拟机”,或者它是否没有虚拟机的属性?

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

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

81得票8回答
寄存器与栈的区别

相较于使用基于栈的虚拟机,使用基于寄存器的虚拟机有哪些优缺点? 对我来说,似乎基于寄存器的机器更易编程且更有效率。那么为什么JVM、CLR和Python VM都是基于栈的呢?

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

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

67得票7回答
CLR是虚拟机吗?

我读了一本书,提到 .net 的 CLR 是一个虚拟机。有人能证明这个说法吗?为什么在某些开发平台上需要虚拟机的概念呢? 难道不能开发一个原生框架 [没有虚拟机],完全面向对象和与 .net 一样强大吗? 这本提到 CLR 是虚拟机的书是《专业 .Net Framework 2.0》。

60得票2回答
什么是Smali代码Android

我将学习一些有关Dalvik VM、dex和Smali的知识。 我已经了解了smali,但仍然不清楚它在编译器链中的位置和用途。 这里有一些问题: 据我所知,dalvik作为其他虚拟机一样运行字节码,在Android中是dex字节码。 什么是smali?Android操作系统或D...

60得票8回答
如何在x86汇编中编写自修改代码

我正在考虑为我最近开发的一款业余虚拟机编写JIT编译器。我懂一些汇编语言,(主要是C程序员。我可以阅读大部分汇编代码,需要查找我不理解的操作码,并编写一些简单的程序。)但我很难理解在网上找到的几个自修改代码的示例。 其中一个示例链接:http://asm.sourceforge.net/ar...

56得票3回答
即时编译和栈上替换的区别

它们两者基本上做着相同的事情。它们都能识别方法是热点并编译它,而不是解释执行。使用OSR,它在编译完成后立即切换到编译版本,而使用JIT,则在方法第二次被调用时才调用已编译的代码。 除此之外,它们还有其他区别吗?

44得票6回答
实现虚拟机的教程/资源

我希望通过自学,在C语言中实现一个简单的动态语言虚拟机,类似于Lua VM、Parrot或Python VM,但更简单。除了查看现有虚拟机的代码和设计文档之外,有没有其他好的资源/教程可以达成这个目标? 编辑:为什么会有关闭投票?我不理解-这不是编程吗。如果我的问题有具体的问题,请留言告诉我。

44得票2回答
为什么用JIT编译器很难在应用性能方面击败AOT编译器?

我认为JIT编译器最终会在编译代码的性能方面击败AOT编译器,因为JIT具有固有优势(可以使用仅在运行时可用的信息)。 一个论点是AOT编译器可以花费更多时间编译代码,但服务器VM也可能花费很多时间。 我确实理解JIT似乎在某些情况下确实打败了AOT编译器,但在大多数情况下它们仍然落后于A...