java - 需要帮助来理解 Java 字节码指令

标签 java java-native-interface bytecode java-bytecode-asm jpl

我正在尝试在 Prolog 中对字节码进行静态分析。我正在使用 bcel 库从 MethodGen 获取指令列表。对于aload_0,我得到 0:aload_0[42](1)

我明白 aload_0 意味着加载第 0 个局部变量。但我很难理解接下来的部分,即 [42](1)。它还提供其他说明,例如:

invokespecial[183](3) 8
return[177](1)

有人可以解释一下那些是什么吗?非常感谢!

最佳答案

42aload_0 的操作码。 183invokespecial 的操作码。 177 是返回等等。 invokespecial后面的8可能是该指令使用的16位常量池索引。

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-7.html

关于java - 需要帮助来理解 Java 字节码指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41603326/

相关文章:

java - JNI : Is GetIntArrayElements always linear in time?

string - 是否可以更改 Lua 字节码中的字符串(内容和大小)以使其仍然正确?

java - 为什么堆栈中会出现sun.misc.Launcher$AppClassLoader.loadClass

java - Android - SQLite 如何按两列获取重复项?

java - 分层选项赋值继承

java - 如何交换两个按钮的背景颜色?

java - 如何修复 JNI 项目中的 UnsatisfiedLinkError(找不到依赖库)

java - 在 android 中禁用 AGC 和高通滤波器

java - 在 javaagent 中访问 servlet-api

java - 使用方法比较两个类对象