问题标签 [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.
assembly - 汇编代码和字节码有什么区别?
在寻找源代码、字节码、汇编代码、机器代码、编译器、链接器、解释器、汇编器等所有含义的各种差异时,我只对字节码和汇编代码之间的区别感到困惑。
特别是这篇描述 CIL 的维基百科文章的介绍让我感到困惑,因为它似乎可以互换使用这两个术语(汇编代码和字节码),这让我认为它们的含义可能完全相同。
java - 为 JVM 生成 .class 文件
我正在开发一个项目,该项目需要我在旅途中生成一个 java“.class”文件,以后可以在 JVM 上编译该文件。在学习和使用 MSIL (Microsoft IL) 这也是一种基于堆栈的中间编程语言之后,以下是我面临的问题:
- 与 IL(对于 C# 或 VB)相比,“.class”文件中的 java 字节码以结构化方式包含信息,据我所知,它包含除程序数据之外的元数据,是真的吗? ? 我可以为每个类文件以模板形式生成相同的吗?
- 是否必须以二进制格式生成类文件?
我参考了“Joshua Engel 的 Java™ 虚拟机编程”,但它并没有达到我的目的,因为我已经了解了 JVm 指令集。
有人可以帮我吗?所有帮助将不胜感激。生成简单类文件的示例将非常有帮助,因为我还找不到单个 1。
java - 字节码到 Java 源代码
是否可以将文件转换.class
为.java
文件?
如何才能做到这一点?
从这个选项中提取的代码的正确性如何?
java - 如何使用 ASM 访问者检查堆栈?
我正在尝试使用 Java 字节码工程库ASM来执行静态分析。我有一种情况,我想检查分配给字段的变量。
我有MethodVisitor
哪个实现该visitFieldInsn()
方法。我正在专门寻找putfield
命令。那没问题。问题是,当我遇到 时putfield
,我希望能够访问将分配给该字段的变量。具体来说,我想访问有关变量类型的信息。
目前我真的只需要查看堆栈顶部的内容,但如果有更通用的方法来检查它,那就更好了。
有没有办法使用 ASM 来检查堆栈上的变量?
java - 是否可以让 System ClassLoader 在运行时加载指定的 .class 文件?
我正在为作业编写一个静态分析工具,它使用 ASM 库分析 Java 字节码。我们使用的 ASM 的其中一个部分要求(或至少似乎要求)从 ClassLoader 加载类。
我们希望该工具能够分析 .class 文件,而无需将它们放在类路径中。我们已经在运行时从指定目录加载 .classes 并使用 InputStream 读取它们。在大多数情况下,这对于 ASM 来说是可以接受的。有一些类,例如SimpleVerifier
,尝试加载这些类。
在这种情况下,是否可以注册要加载的 .class 文件,以便调用Class.forName()
将加载它们?或者有没有一种简单的方法来扩展 ClassLoader 以允许这样做?
编辑:关于的信息URLClassLoader
很有用。不幸的是,Thread.currentThread().setContextClassLoader()
在这种情况下使用该实例不起作用。我调用的库代码使用它在实例初始化时使用getClass().getClassLoader()
.
当我设置 URLClassLoader 时,该类尚未初始化,所以我猜 contextClassLoader 没有加载该类。
我是否正确理解了这些回答?是否有可能使用 URLClassLoader 加载第 3 方类?
java - 从 Eclipse 的 CompilationUnit 生成字节码
我不是在做一个 Eclipse 插件项目;但是,我使用生成 org.eclipse.jdt.core.dom.CompilationUnit 实例的外部库。有没有办法从中生成 Java 字节码?
一些搜索显示,CompilationUnit 通常是通过为 Eclipse 项目注册一个自定义构建器,然后让 eclipse 调用它来构建的……但我找不到任何方法来利用它来构建独立的应用程序。
python - 没有 -O 标志,Python 做了哪些优化?
我一直认为 Python 解释器在没有-O
标志的情况下没有进行任何优化,但以下内容有点奇怪:
似乎解释器正在对两个字符串常量的模进行一些折叠。如果我添加一个变量,它会给出一个未优化的结果:
没有 -O 标志,Python 做了哪些优化?有没有办法禁用它们?我想看看未优化的 Python 字节码的外观。我不打算在任何生产类型的环境中这样做。
java - 如何静态识别 JAR 中缺少的方法(二进制兼容性)
我想验证 2 个 JAR 之间的二进制兼容性。
按照这个答案中的建议,我使用了jboss tattletale,但它只能找到缺失的类。
如何查找是否缺少方法?有可能吗?
例如
“取决于”类Foo 取决于 Bar(像许多其他中产阶级工人一样)
“编译时间”类
现在想象一个旧的Bar jar 正在替换已编译的时间栏:
“运行时”类
有没有办法在不运行它并获得的情况下识别丢失的方法NoSuchMethodError
?
免责声明:这是对我自己的相关问题的重大改写,不可删除。我选择提出一个新问题,因为重新措辞会使当前的 2 个答案与主题完全无关。
python - 如何保护 Python 源代码?
是否可以仅分发 Python 脚本的字节码版本(.pyc 文件)而不是原始 .py 文件?我的应用程序嵌入了 Python 解释器并调用 PyImport_Import 来加载脚本。我如何告诉它查找 .pyc 文件并导入它?
python - 将 Python 字节码重新组装成原始代码?
这可能是一个愚蠢的问题,但是,鉴于输出,说..
..或.pyc
文件 - 是否可以将其重新组装成一段有效的 Python 源代码?即在哪里reassemble(dis(myfunc)) == "def reassembled_function(x):\n print x ** 2"
不是出于任何特定的实际原因,我只是好奇这是否可能,或者是否已经尝试过……