我正在尝试在Prolog中对字节码进行静态分析。我正在使用bcel库从MethodGen获取指令列表。对于aload_0,我明白了
0:aload_0[42](1)
我理解aload_0
意味着加载第0个局部变量。但是我很难理解下一个比特,[42](1)
。它也可用于其他指令,例如:
invokespecial[183](3) 8
return[177](1)
有人可以解释那些是什么吗?非常感谢!
答案 0 :(得分:2)
42
是aload_0
的操作码。
183
是invokespecial
的操作码。 177
返回,依此类推。 invokespecial之后的8
可能是指令使用的16位常量池索引。
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-7.html