问题标签 [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 投票
4 回答
13319 浏览

performance - How is pattern matching in Scala implemented at the bytecode level?

How is pattern matching in Scala implemented at the bytecode level?

Is it like a series of if (x instanceof Foo) constructs, or something else? What are its performance implications?

For example, given the following code (from Scala By Example pages 46-48), how would the equivalent Java code for the eval method look like?

P.S. I can read Java bytecode, so a bytecode representation would be good enough for me, but probably it would be better for the other readers to know how it would look like as Java code.

P.P.S. Does the book Programming in Scala give an answer to this and similar questions about how Scala is implemented? I have ordered the book, but it has not yet arrived.

0 投票
2 回答
4968 浏览

java - 字节码如何在 JVM 中得到验证?

字节码如何在 JVM 中得到验证?

0 投票
2 回答
1482 浏览

java - ilasm / ildasm 的 Java 字节码等价物

对于 CIL / MSIL,我可以在文本编辑器中编写代码并使用 ilasm / ildasm 进行编译/反编译。

我可以使用 Reflector 查看由 .NET 类生成的 CIL。

在 Java 世界中, javap -c 显示了反汇编的字节码。

如何编译 Java 字节码?(即 ilasm / ildasm 的 Java 等价物)。

是否有支持 Java 字节码的 IDE?

IDE 是否支持调试,即单步执行/断点等?

0 投票
4 回答
529 浏览

java - 我应该查看 java 编译器生成的字节码吗?

No

  • 无论如何,JIT 编译器可能会将字节码“转换”成完全不同的东西。
  • 它将导致您进行过早的优化。

Yes

  • 您不知道 JIT 将编译哪种方法,因此最好将它们全部优化。
  • 它会让你成为一个更好的Java程序员。

我是在不知道(显然)的情况下问的,所以请随意重定向到 JIT 超链接。

0 投票
7 回答
1521 浏览

python - 有没有办法检查函数输出是否分配给 Python 中的变量?

在 Python 中,我想编写一个函数,如果它自己调用它会将其结果漂亮地打印到控制台(主要用于交互使用或用于调试)。就这个问题而言,假设它检查某物的状态。如果我只是打电话

我想看到类似的东西:

但是,如果我在变量赋值的上下文中调用它,我也希望它将输出作为列表传递:

那么......有没有办法在一个函数中动态地知道它的输出是否被分配?我希望能够在不使用参数传递或为此编写另一个专用函数的情况下做到这一点。我已经用谷歌搜索了一段时间,从我所能知道的一点点看来,我不得不求助于使用字节码。这真的有必要吗?

0 投票
2 回答
1040 浏览

c# - 使用 C# 将 PHP 脚本转换为 OpCode 的最简单方法是什么?

使用 C# 将 PHP 脚本(.php)转换为 OpCode/Bytecode(操作码)的最简单方法是什么?如果必须,我可以使用 DLL。

我需要为我正在工作的项目完成此操作,以便更轻松地分析 PHP 代码。

欢迎任何想法或想法。

0 投票
4 回答
1608 浏览

compiler-construction - 字节码解析指令和机器语言之间的区别?

“字节码程序通常通过一次解析一条指令来执行。这种字节码解释器非常便携。一些称为动态翻译器或“即时”(JIT)编译器的系统将字节码翻译成机器语言在运行时根据需要:这使虚拟机不可移植。”

关于这一段的一个问题是:字节码被处理后,解析后的指令和机器语言(或机器码)有什么区别?

0 投票
6 回答
4466 浏览

python - 为什么python在解释之前将源代码编译为字节码?

为什么python在解释之前将源代码编译为字节码?

为什么不直接从源头解释呢?

0 投票
5 回答
247 浏览

bytecode - 每次到达该行时,是否会重新解释解释语言的代码?

假设没有为程序生成字节码,例如在 Ruby、Perl 或 PHP 中,在这种情况下,每次执行再次到达第 1 行时,是否会重新解释下面的第 1 行?

也就是说,如果循环运行 100,000 次,那么该行将被重新解释 100,000 次?

如果是这样,字节码的创建不仅有助于程序的初始启动,而且在执行期间也有帮助?(因为代码不需要再次重新解释)

0 投票
7 回答
1839 浏览

java - 有没有去除无用 goto 的 Java 字节码优化器?

问题:我有一个方法可以编译成超过 8000 字节的 Java 字节码。HotSpot 有一个神奇的限制,使 JIT 不会为超过 8000 字节的方法启动。(是的,拥有一个巨大的方法是合理的。这是一个标记器循环。)该方法在一个库中,我不想要求该库的用户必须配置 HotSpot 才能停用魔法限制。

观察:反编译字节码表明 Eclipse Java 编译器生成了很多无意义的 goto。(javac 甚至更糟。)也就是说,有些 goto 只能通过跳转到达。显然,跳转到 goto 的跳转应该直接跳转到 goto 跳转的地方,并且 goto 应该被消除。

问题:是否有针对 Java 5 类文件的字节码优化器,它可以扁平化无意义的跳转链,然后删除不必要的 goto?

编辑:我的意思是这样的模式:

显然,第二个 goto 只能通过跳转到 8701 来达到,这也可能是直接跳转到 0。

在第二次调查中,这种可疑的模式更为常见:

显然,人们希望编译器将“不等于”比较反转为“相等”比较,跳转到 8704 并消除 goto。