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

Need help to understand Java Bytecode Instruction

我正在尝试在 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 是 return 等等。 invokespecial后面的8大概是指令使用的16位常量池索引

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