问题标签 [vm-implementation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
311 浏览

python - 在 Python 中快速动态代码执行的可能性

我有一些以某种形式的 AST 可用的代码,我想执行它。

我可以想到几种方法来做到这一点,例如:

  • 直接解释就行了。
  • 将其翻译成 Python AST(ast模块)和
    • Python-compile那个或
    • Python-eval那个。
  • 将其翻译成 Python 源代码(例如纯字符串)和
    • Python-compile那个或
    • Python-eval那个。
  • 将它翻译成某种形式的低级代码,然后用 Python 编写一个简单的 VM 来运行它。

我想我会通过将其转换为 Python ASTcompile并运行它来获得快速执行。特别是。使用 PyPy 时,我什至可以通过 PyPys JIT 编译优化得到改进(我希望我这样做,是吗?)。

你能想到其他的可能性吗?你能就什么可能是最好的方法提出建议吗?

0 投票
1 回答
555 浏览

smalltalk - 在游戏中使用虚拟机?

我正处于制作 3D“机器人编程”游戏的设计阶段。灵感来自 Colobot、Robot Odyssey、Cholo 等游戏。

我希望游戏中的每个机器人都拥有自己的隔离环境/操作系统/虚拟机,就像他们在现实生活中一样。每个环境都应该被沙盒化,这样就机器人与游戏其余部分的交互方式而言,它是机器人的本地环境。

最初我打算按照“计算系统的要素”一书中的描述实现 HACK VM,但后来好奇是否有更好的解决方案来解决这种游戏风格的性能问题。

所以我的问题是:是否已经存在可以很好地满足我的目的的虚拟机架构?

Ps 使用的语言和游戏引擎尚未确定,但可能是 C# 或 smalltalk。

0 投票
2 回答
138 浏览

c - 在 C 中,确保多段代码的汇编指令数量是固定的

在我正在编写的虚拟机中,我希望能够以类似于以下伪代码的方式调度命令。

其中 memory 是一个包含字节码的数组,而 pc 是一个程序计数器。然而,要做到这一点需要我们跳转到的每个位置在下一个块之前具有完全相同数量的指令。下拉到汇编不是一种选择,除非有一个很棒的平台无关的汇编代码,它允许使用相同的代码并编译到 Linux、Mac 和 Windows。无论每个处理器都位于哪个处理器之上。任何和所有的帮助将不胜感激。

0 投票
6 回答
330 浏览

c# - 在 C# 中分配堆栈大小?

我正在为我一直在研究的字节码语言开发一个虚拟机。我正在System.Collections.Generic.Stack为堆栈使用该类,但有什么方法可以分配堆栈大小吗?还是我只需要编写自己的堆栈对象来使用?

0 投票
3 回答
2431 浏览

ruby - 如何观察 YARV 执行的 Ruby 字节码

我想观察 YARV 执行的 Ruby 字节码,事后。

我怎样才能得到这个?

这里的其他人告诉这是不可能的。不过有hotruby框架好像是执行ruby字节码的,所以很纳闷……

非常感谢!

0 投票
2 回答
961 浏览

python - 如果我有解释器,为什么要使用 Parrot(或其他 VM)?

如果我已经有了解释器,为什么还要使用像 Parrot 这样的 VM 作为我使用的动态语言(Python、Perl、...)?对于在我的代码和我的机器之间使用不同的 VM 以及使用单独的解释器的成本,我可能获得什么?

(我是VM问题的新手,所以答案可能很明显)

编辑

Parrot VM 对最终用户有什么好处?

0 投票
3 回答
1129 浏览

assembly - 了解编译器的最佳方式是什么?

我正在尝试了解编译器、操作系统和计算机系统如何在内部工作。这是我目前的计划:

  1. 用 C 编写一个简单的虚拟机,它可以接受用它的机器语言(我的规范的自定义语言)编写的输入。
  2. 为该虚拟机编写一个汇编程序。
  3. 为机器的基本语言编写一个非常基本的编译器。
  4. 通过包含一个屏幕(我想我将使用 SDL)和一个通过显存到该屏幕的接口来扩展虚拟机的交互性。我还可以添加鼠标/键盘功能。

任何提示或建议都会很好。先感谢您!

0 投票
3 回答
83 浏览

java - 覆盖与查找

我正在阅读SparseArrayandroid中的课程,并遇到了以下方法:

显然,这也可以写成:

看起来 android 开发人员认为数组查找mValues[index]比数组写入快,但变量查找并不比变量写入快。

这是真的吗?它是否依赖于虚拟机,或者它也依赖于编译语言的一般知识?

0 投票
2 回答
438 浏览

vm-implementation - 在 Rubinius VM 上创建语言

我正在寻找使用 Rubinius VM 来创建一种语言,但只是阅读文档,我仍然对如何开始感到迷茫。即使查看项目,我似乎仍然无法弄清楚解析和使用 vm 的位置。有没有人有这方面的资源?

0 投票
1 回答
91 浏览

c# - 值类型可以通过内联来实现吗?

当我第一次看到 C# 中的值类型时,我首先想到的是“哇,多么棒的优化”,第二件事是,“我们真的需要一种新的语言结构吗?我们不能用注解来代替吗? ”。

这个想法是,给定一个类,我们将像往常一样使用它

一时兴起,我们会A变成

并且编译器会自动将类转换B

请记住,如果编译器不希望优化某些实例 - 它不必这样做。无论哪种方式都可以。

模板可能会出现问题,

但我不确定它是否比目前的情况更糟。我实际上不确定现在会发生什么(f<struct_of_100_bytes>与功能不同f<int>?)。