8得票3回答
如何提高巨型多态调用点的效率?有哪些不同的技术可以使用?

前言 本文旨在提高即时编译器中消息发送的效率。尽管参考了Smalltalk,但这个问题适用于大多数动态JIT编译的语言。 问题 给定一个消息发送站点,它可以被分类为单态、多态或巨态。如果消息发送的接收者始终是相同类型,则为单态发送,例如 10 timesRepeat: [Object ...

11得票1回答
基于寄存器的虚拟机是如何工作的?

寄存器型虚拟机是如何工作的? 我正在寻找关于寄存器型虚拟机如何工作的介绍。 能否有人提供帮助? 谢谢。

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

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

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

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

26得票9回答
任何汇编语言被认为是有用的最少指令集是什么?

我正在学习总的汇编编程,因此我决定尝试在软件中实现一个“虚拟微处理器”,该处理器具有寄存器、标志和RAM,使用变量和数组实现。但由于我只想模拟任何微处理器的最基本行为,因此我想创建一个只包含必要指令的汇编语言,只有这些指令才是有用的。我的意思是,有一些汇编语言可以进行乘法和交换寄存器值等操作,...

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

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

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

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

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

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

9得票3回答
Squeak/Pharo/Newspeak Smalltalk虚拟机有什么区别?

在学习Smalltalk时,我看到了3个不同的虚拟机。它们是Squeak/Pharo/Newspeak。它们之间有什么区别?

43得票8回答
什么是原始的Forth运算符?

我有兴趣实现一个Forth系统,只是为了获得一些构建简单虚拟机和运行时的经验。 开始学习Forth时,人们通常首先学习堆栈及其操作符(DROP,DUP,SWAP等),因此自然会认为它们是原始操作符之一。但事实并非如此。每个操作符都可以分解成直接操作内存和堆栈指针的操作符。稍后再学习存储(!)...