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

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

21得票4回答
C++:浮点数、精度、虚拟机和GCC

我有以下代码:#include <cstdio> int main() { if ((1.0 + 0.1) != (1.0 + 0.1)) printf("not equal\n"); else printf("equal\n"); r...

8得票2回答
Dalvik虚拟机在方法调用之间如何保存和恢复其寄存器?

从语义上讲,Dalvik虚拟机为每个方法提供了一组新的寄存器,并且没有指令可以访问调用堆栈。但在其实现方面,寄存器应该在方法调用时以某种方式保存,并在方法返回时恢复。 (Google的实现) Dalvik是如何做到这一点的?

12得票2回答
实现函数式语言的虚拟机有哪些明显的优化方法?

我正在开发一种中间语言和虚拟机,用于运行一个具有一些"棘手"特性的函数式语言: 词法命名空间(闭包) 动态增长的调用栈 缓慢的整型(大数) 这个中间语言是基于栈的,使用一个简单的哈希表来存储当前命名空间。为了让你了解它是什么样子,这里有一个麦卡锡91函数的例子:# McCarthy 9...

7得票3回答
为C语言子集实现基于栈的虚拟机

大家好,我目前正在实现一种简单的编程语言以进行学习体验,但我需要一些建议。目前我正在设计我的解释器并遇到了问题。 我的语言是C语言的子集,我在堆栈解释器实现方面遇到了问题。在这种语言中,以下内容将会被编译: somefunc () { 1 + 2; } main () { ...

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

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

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

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

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

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

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

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

17得票2回答
现代虚拟机如何处理内存分配?

我正在编写一个简单的堆栈机器程序,使用C语言编写,主要是为了学习目的。在使用malloc/free进行内存操作后,我认为阅读一些现代虚拟机中的内存分配特定代码是一个好主意。 我下载了Lua源代码并开始阅读它。过了一会儿,我意识到有很多宏定义涉及其中,并且我找不到真正执行内存分配(即mallo...