问题标签 [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.
java - 使用 ASM Java 库拆箱
我正在使用 ASM Java 库来替换一些反射。我生成这个方法的主体:
使用这个生成的方法,我可以在运行时在对象上设置字段,而无需使用反射。它工作得很好。但是,我发现原始字段失败了。这是我的 set 方法的相关部分:
此代码正在为选择生成案例标签。它适用于对象,但对于原语我得到这个错误:
期望在堆栈上找到浮点数
好的,这是有道理的,我需要自己拆箱。我实现了以下内容:
我已经追踪过了,它肯定会进入适当字段的“case Type.FLOAT”,但是,我收到了这个错误:
期望在堆栈上找到对象/数组
这就是我卡住的地方。对于我的生活,我无法弄清楚为什么拆箱不起作用。“ALOAD, 3”是将set方法的第三个参数放入堆栈,应该是一个Float。有任何想法吗?
我发现 asm-commons 库有一个具有 unbox 方法的 GeneratorAdapter 类。但是,我真的不想再为应该如此简单的东西包含另一个 JAR。我查看了 GeneratorAdapter 源代码,它正在做一些非常相似的事情。我试图修改我的代码以使用 GeneratorAdapter,只是想看看它是否有效,但根本没有发现它很容易转换。
c++ - CPython 是字节码解释器?
在 CPython 的上下文中,我并没有真正理解“字节码解释器”的概念。有人可以对整个图片有所了解吗?
这是否意味着CPython将编译并执行pyc文件(字节码文件?)。那么什么编译py文件到pyc文件呢?Jython 与 CPython 有何不同(除了它们是用不同的语言实现的)。
我还在某处读到 Python 是 C++ 解释。这个对吗?那是什么意思?
我对 Python 还是很陌生,所以如果我问愚蠢的问题,请原谅我......非常感谢!
java - 从字节码解析类名
是否可以从由类的源代码形成的字节码中挖掘出类名?
情况是这样的:我从某个地方远程获取一个类字节码,它来自哪里并不重要。为了有效地使用类加载器加载该类,我还需要具有类名......对吗?
java - Java 版本之间是否存在向后不兼容的具体示例?
Java 版本之间是否存在不兼容性,其中针对 Java 版本 X 的 Java 源代码/Java 类文件不会在版本 Y(其中 Y > X)下编译/运行?
“Java 版本”是指以下版本:
- JDK 1.0(1996 年 1 月)
- JDK 1.1(1997 年 2 月)
- J2SE 1.2(1998 年 12 月)
- J2SE 1.3(2000 年 5 月)
- J2SE 1.4(2002 年 2 月)
- J2SE 5.0(2004 年 9 月)
- Java SE 6(2006 年 12 月)
家庭规则:
- 请尽可能包括参考资料和代码示例。
- 请尽量在您的回答中非常具体/具体。
- 被标记为@Deprecated 的类不算作向后不兼容。
java - 编译器优化:Java 字节码
我目前正在编写一个玩具编译器,用于翻译中的 Java 字节码。
我想知道在编写 .class 文件之前是否可以在发出的字节码中进行各种简单的窥视孔优化的某种目录,也许是摘要。我实际上知道一些具有此功能的库,但我想自己实现它。
java - 有哪些有趣的、免费的、开源的 Java 动态分析工具?
我正在寻找一些有趣的动态分析器来使用和报告大学作业。工具应该是:
- 开源(所以我可以向他们学习)
- 免费(演讲和啤酒都一样,因为我希望能够分享结果,我很吝啬,分别)
- 适用于 Java(源代码或字节码)
这包括但不限于性能分析器。他们可以执行任何类型的分析,只要它是动态的,例如代码覆盖率、多线程正确性。
产生的结果在某种程度上应该是有用的,但它们不一定是工业强度。
类似的问题:
那么有哪些有趣的、免费的、开源的 Java 动态分析工具呢?
python - Python的基本优化模式有什么用?(蟒蛇-O)
Python 有一个-O
可以用来执行解释器的标志。该选项将生成“优化”字节码(写入 .pyo 文件),并给出两次,它将丢弃文档字符串。从 Python 的手册页:
-O 打开基本优化。这会将已编译(字节码)文件的文件扩展名从 .pyc 更改为 .pyo。给出两次,导致文档字符串被丢弃。
在我看来,此选项的两个主要功能是:
剥离所有断言语句。这牺牲了对腐败程序状态的防御以换取速度。但是你不需要大量的断言语句来产生影响吗?您是否有任何值得这样做的代码(并且理智?)
剥离所有文档字符串。在哪个应用程序中内存使用如此关键,以至于这是一个胜利?为什么不将所有内容都放入用 C 编写的模块中呢?
这个选项有什么用?它有现实价值吗?
java - 如何以编程方式确定当前类的 Java 字节码版本?
我有一种情况,部署平台是 Java 5,而开发是在 Java 6 下使用 Eclipse 进行的,我们已经建立了一个在开始处理给定项目时创建新工作区的过程。因此,需要的步骤之一是将编译器级别设置为 Java 5,这经常被遗忘。
我们有一台运行部署平台的测试机器,我们可以在其中运行我们构建的代码并在我们的 PC 上进行初始测试,但如果我们忘记切换编译器级别,程序将无法运行。我们有一个构建服务器,用于创建交付给客户的内容,效果很好,但这是用于不需要构建服务器的开发,并且会增加不必要的等待。
问题是: 我能否以编程方式确定当前类的字节码版本,这样我的代码就可以在本地 PC 上进行测试时打印出警告?
编辑:请注意,要求是针对当前班级的。这可以通过类加载器获得吗?还是我必须找到当前类的类文件,然后进行调查?
java - 什么是 ILLegal 字节码?
在阅读 Java Security 时,我遇到了以下句子,但在 Internet 上找不到任何令人满意的解释。谁能解释一下
- 防止使用字节码加载类
- 防止装载非法包裹
java - java字节码中的局部变量
我正在尝试学习 java 字节码,但我偶然发现了这一点:我使用以下-g
选项编译了这个非常简单的代码:
主要代码原来是:
另外,main 的最大局部变量是 4 个,LocalVariableTable 只有 3 个条目(args, a, b)。我很想知道为什么编译器保留了 4 个局部变量,而显然只有 3 个,并且localvariable[2]
没有被使用。有什么我想念的吗?谢谢