问题标签 [bytecode]

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 投票
14 回答
253407 浏览

php - 你能“编译”PHP 代码并上传一个二进制文件,它只由字节码解释器运行吗?

我知道 PHP 在服务器上运行之前会被编译为字节码,然后可以缓存该字节码,这样就不必在每次 Web 访问时重新解释整个脚本。

但是你能“编译”PHP 代码并上传一个二进制文件,它只会由字节码解释器运行吗?

0 投票
2 回答
290 浏览

string - 字符串如何嵌入二进制文件中?

我正在编写自己的字节码和虚拟机(在 .NET 上),而我不知道的一件事是如何将字符串嵌入到我的字节码中。现在有什么想法我应该怎么做?

0 投票
5 回答
971 浏览

java - 将 JVM 字节码往返于文本表示并返回的故障安全方式

我正在寻找一种在 JVM 类文件和文本表示之间往返并再次返回的故障安全方法。

一个严格的要求是,只要文本表示保持不变,生成的往返 JVM 类文件在功能上与原始 JVM 类文件完全相同。

此外,文本表示必须是人类可读和可编辑的。应该可以对文本表示进行小的更改(例如更改文本字符串或类名等),这些更改会反映在生成的类文件表示中。

最简单的解决方案是使用 Java 反编译器(例如 JAD)来生成文本表示,在这种情况下,它只是重新创建的 Java 源代码。然后使用 javac 生成字节码。但是,鉴于免费 Java 反编译器的状态,这种方法并非在所有情况下都有效。创建无法在完整的往返类文件/java-source/class-file 中存活的混淆字节码是相当容易的(部分原因是 JVM 字节码和Java 源代码)。

鉴于上述要求,是否有一种故障安全的方法来实现 JVM 类文件/文本表示/类文件往返?

更新:在回答之前 - 通过阅读上述所有要求来节省时间和精力,并特别注意:

  • “JVM 字节码的文本表示”不一定意味着“Java 源代码”。
0 投票
3 回答
3274 浏览

java - Java 字节码在同一版本 Java 的不同更新中是否兼容?

这个问题与这里讨论的另一个主题有关:
Java 字节码是否与不同版本的 Java 兼容?
但在这种情况下,想知道是否在同一版本中但在不同的更新中保留了兼容性。
例如,1.6.0_14 版本的编译器生成的字节码是否与 1.6.0 的 JVM 兼容?代码运行愉快,但我不知道是否有任何可能意外出现的问题。

问候。

0 投票
4 回答
18137 浏览

documentation - Lua 的字节码规范

谁能告诉我在哪里可以找到 Lua 的字节码规范?我已经搜索了 15 分钟,但我找不到任何东西

0 投票
6 回答
4243 浏览

python - 有没有办法以编程方式生成 Python 字节码?

我想破解 Python 解释器并尝试创建一个小的 DSL 。有没有我可以做类似这个理论代码的模块(类似于 LINQ 表达式树)?

还是只生成 Python 源代码会更容易?使用 C 或 SWIG 或 Cython 可以使这更容易吗?

0 投票
1 回答
957 浏览

syntax - java代码中的Scala:$冒号

我阅读了一些 Java 源代码,其中包括 Scala 源代码。

我发现Nil.$colon$colon(Object arg)

关键词是什么$colon意思?这条线是什么意思?

0 投票
4 回答
1905 浏览

java - 在 Java 类文件的字节码版本之间切换

给定一个字节码版本 X 的 Java 类文件 (ClassName.class),是否有一种通用方法可以将该类文件从字节码版本 X 中表示为字节码版本 Y 中表示?

假设:

  • 源代码不可用。类文件是类的唯一可用表示。
  • 类文件被严重混淆,所以用说 jad 或类似程序反编译类,然后用“-target ...”重新编译它是行不通的。

初次发帖后的更新:

  • 更新#1:此外,假设字节码版本 X 和字节码版本 Y 足够接近,因此类使用的所有指令(当前在字节码版本 X 中)也存在于版本 Y 中。
0 投票
8 回答
7033 浏览

java - 编译 Java 类时禁用编译时依赖项检查

考虑以下两个 Java 类:

此外,假设pkg.not.in.classpath.FooBar在类路径中找不到它。

第一个类将使用标准 javac 编译得很好。

但是,第二个类不会编译,javac 会给你错误信息"package pkg.not.in.classpath does not exist"

在一般情况下,错误消息很好,因为检查您的依赖项允许编译器告诉您是否有一些方法参数错误等。

虽然在编译时检查依赖关系很好也很有帮助,但在上面的示例中生成 Java 类文件并不严格需要 AFAIK。

  1. 你能举出任何例子,如果不执行编译时依赖检查,在技术上就不可能生成有效的 Java 类文件吗?

  2. 你知道有什么方法可以指示 javac 或任何其他 Java 编译器跳过编译时依赖检查吗?

请确保您的答案解决了这两个问题。

0 投票
6 回答
12663 浏览

java - 理解 Java 字节码

我经常被一个没有源代码的 java 类文件困住,我试图理解我手头的问题。

请注意,反编译器在所有情况下都很有用,但还不够……

我有两个问题

  1. 有哪些工具可以查看java字节码(最好从linux命令行下)
  2. 熟悉java字节码语法有哪些好的参考资料