除了实际破解代码之外,了解 VM 实现的最佳方法是什么?

2024-01-15

我想了解有关虚拟机实现和优化的更多信息。现在,我正在(以很小的方式)使用 JRuby 做出贡献,并且还在使用我自己的在虚拟机中运行的类似 lisp 的语言实现进行游戏/编写。

不过,我想获得有关使用虚拟机并设计它们的更多信息。除了阅读/使用现有代码之外,是否有此类信息的良好资源?我并不反对这样做,我只是想知道是否还有其他来源可以研究。


还检查Lua 5.0的实现 http://www.tecgraf.puc-rio.br/~lhf/ftp/doc/jucs05.pdf。它被广泛认为是同类中最快的虚拟机,也是最简洁和最小的实现之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除了实际破解代码之外,了解 VM 实现的最佳方法是什么? 的相关文章

  • 使用矢量化为 iPhone 编译 Eigen 库

    我正在努力为 iPhone 4 编译 Eigen 库 该库具有带有 armv7 指令集的 ARM 处理器 到目前为止 当我指定预处理器定义 EIGEN DONT VECTORIZE 时 一切正常 但由于一些性能问题 我想使用armv7优化的
  • 如何将 Ruby 编译为 Javascript? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在研究一段逻辑 我想在服务器和浏览器中表达它 类似于验证表单 其中基于已输入的内容 元素之间必须存在某些逻辑关系 所以 如果我可以编写
  • 编译器如何解析在变长数组之后声明的变量的地址?

    假设我有以下函数 它使用可变长度数组 void func int size int var1 int arr size int var2 编译器如何确定地址var2 我能想到的唯一方法就是放置arr after var1 and var2
  • 使用 boost 库时加快编译/链接时间

    我在用着提升计划选项 http www boost org doc libs 1 45 0 doc html program options html 并且用它编译非常小的 C 代码需要相当长的时间 10 秒甚至更多 在没有 boost 库
  • 如何在代码生成过程中简化包含变量的 C 风格算术表达式?

    我正在尝试优化编译器中的表达式求值 算术表达式都是C风格的 并且它们可以包含变量 我希望尽可能简化表达 例如 3 100 A B 100 3 100可以简化为409 300 A B 主要取决于分配律 结合律和交换律 我遇到的主要困难是如何将
  • 当我使用 yymore() 时,在 EOF 处出现 Flex 错误“缓冲区末尾丢失”

    我正在编写一个 Flex 程序来处理字符串常量 当输入文件在字符串中遇到 EOF 时 我想返回一个 ERROR 标记 文件遇到 EOF 并打印 ERROR 后出现以下错误 致命的 Flex 扫描仪内部错误 缓冲区末尾丢失 这是我的代码 可以
  • 语言是如何以及为何形成的/是否有任何正在发展的语言表现出希望? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 错误:在 Java 中声明布尔值时不是一个语句

    下面的代码 boolean continue false 返回以下错误 error not a statement boolean continue false 为什么会发生这种情况 我对布尔值非常熟悉 试试这个 boolean cont
  • 实现词法分析器时,DFA 与正则表达式?

    我刚刚学习如何编写编译器 所以如果我有任何错误的说法 请纠正我 当人们可以简单地使用正则表达式时 为什么还要在代码中实现 DFA goto 语句 表驱动实现 据我了解 词法分析器接收一串字符并生成一个标记列表 这些标记在语言的语法定义中是终
  • 哪些编程语言不被视为高级语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在信息学理论中 我一直听到和读到有关高级和低级语言的内容 然而我不明白为什么这仍然相关 因为除了今天使用的汇编语言之外 没有任何 相关的 低级语
  • 是否可以用 C# 为 Android 编写应用程序?

    我们都知道Android运行Dalvik VM程序 通常开发人员用 Java 编写程序并将其编译为 Dalvik 字节码 我想知道是否有可能创建一个可以接受 C 代码并将其编译为 Dalvik 字节码的编译器 嗯 这是一种选择 或者您可以在
  • 如何编译GCC生成的asm?

    我正在玩一些汇编代码 有些事情困扰着我 我编译这个 include
  • Flash Builder 条件编译变量

    我正在使用 Flash Builder 4 5 并且我想在调试和发布版本之间使用条件编译 我了解如何使用条件编译以及如何定义编译器常量 我需要的是 IDE 在调试和发布版本之间设置的预定义常量 一种在调试和发布版本之间为编译器指定不同参数的
  • 如何在Windows上安装机器人操作系统ROSJava?

    ROS 的文档很糟糕 一个很大的讽刺是 ROS 的 Groovy 和 ROSJava 版本的创建是为了让 Windows 等平台上的开发人员能够利用出色的机器人 SDK 而所有安装说明仍然面向 Linux ubuntu 用户 The ROS
  • Visual Studio 空引用警告 - 为什么没有错误?

    我注意到 Visual Studio 的一些特殊之处 首先 尝试在函数中的某个位置键入以下内容 C class Foo public void Bar string s int i s Length 现在 它会立即标记s in s Leng
  • 可以读取目标文件吗?

    我很好奇 obj文件 我几乎不知道它们是什么 或者它们包含什么 所以我用 Vim 文本编辑器打开它们 我在里面发现了一种类似外星人的语言 有什么办法可以理解它们代表什么以及它们的内容是什么 另外 它们的用途是什么 Thanks Sure 但
  • 当参数类型不明确时,编译器如何选择调用哪个方法?

    我有以下代码 TestMethod public void TestFoo Foo null private void Foo object bar Console WriteLine Foo object private void Foo
  • 似乎有时 Delphi 是区分大小写的 - “覆盖方法应该与祖先的大小写匹配”

    今天我遇到了一个 奇怪 的提示 覆盖方法 xxxx 应匹配祖先 yyyy 的大小写 解决方案是完全按照祖先中的方式声明方法名称 我相信这是自 Delphi Net 编译器以来编译器中保留的东西 与祖先中完全相同的方法声明方法使编译器 沉默
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适

随机推荐