JVM字节码的说明

时间:2016-04-01 08:56:45

标签: jvm bytecode

有人可以解释如何计算JVM操作码旁边的数字吗? 我认为操作码的操作码为1个字节,操作数的其余字节为1个字节。我是对的吗?

示例:

Method int add12and13() 
 0 bipush 12 
 2 bipush 13 
 4 invokestatic #3 // Method Example.addTwoStatic(II)I 
 7 ireturn

1 个答案:

答案 0 :(得分:4)

你是对的。这是从方法开始的字节码偏移量。

invokestatic有1个字节的参数,所以总共需要2个字节。

{{1}}需要3个字节:操作码+ 2个字节用于常量池索引,也就是说,下一条指令的偏移量将是{{1}}的+3个字节。