有人可以解释如何计算JVM操作码旁边的数字吗? 我认为操作码的操作码为1个字节,操作数的其余字节为1个字节。我是对的吗?
示例:
Method int add12and13()
0 bipush 12
2 bipush 13
4 invokestatic #3 // Method Example.addTwoStatic(II)I
7 ireturn
答案 0 :(得分:4)
你是对的。这是从方法开始的字节码偏移量。
invokestatic
有1个字节的参数,所以总共需要2个字节。
{{1}}需要3个字节:操作码+ 2个字节用于常量池索引,也就是说,下一条指令的偏移量将是{{1}}的+3个字节。