我正在尝试在 Prolog 中对字节码进行静态分析。我正在使用 bcel 库从 MethodGen 获取指令列表。对于 aload_0,我得到
0:aload_0[42](1)
我知道aload_0
是为了加载第 0 个局部变量。但我很难理解接下来的内容,即[42](1)
. 它也有其他说明,例如:
invokespecial[183](3) 8
return[177](1)
有人可以解释一下那些是什么吗?将不胜感激!
我正在尝试在 Prolog 中对字节码进行静态分析。我正在使用 bcel 库从 MethodGen 获取指令列表。对于 aload_0,我得到
0:aload_0[42](1)
我知道aload_0
是为了加载第 0 个局部变量。但我很难理解接下来的内容,即[42](1)
. 它也有其他说明,例如:
invokespecial[183](3) 8
return[177](1)
有人可以解释一下那些是什么吗?将不胜感激!
42
是 的操作码aload_0
。
183
是 的操作码invokespecial
。177
是返回等等。8
after invokespecial 可能是指令使用的 16 位常量池索引。
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-7.html