不可见的java字节码行

nra*_*ner 4 java bytecode java-bytecode-asm

我想知道为什么Java字节码的行号不连续.

例如,在下面的getter的(未列出的)第2行和第3行中会发生什么?

public java.lang.String getX();

Code:
0:   aload_0
1:   getfield        #2; //Field x:Ljava/lang/String;
4:   areturn
Run Code Online (Sandbox Code Playgroud)

我正在使用ASM框架来处理字节码.当使用树API访问方法的代码时,我也会获得这些"隐藏"指令(但是使用操作码-1).我想知道它们的用途.

A.H*_*.H. 8

我认为这0, 1, 4不是亚麻,而是字节码中的字节偏移.

  • aload_0 是一个字节
  • getfield 是三个字节(一个操作码,一个"索引"arg,两个字节"
  • areturn 是一个字节

所以2,3只是getfield操作的一部分.