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

时间:2017-01-12 00:43:15

标签: 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)

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

1 个答案:

答案 0 :(得分:2)

42aload_0的操作码。 183invokespecial的操作码。 177返回,依此类推。 invokespecial之后的8可能是指令使用的16位常量池索引。

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