Java字节码中“GOTO”之后的数字是多少?

时间:2017-12-21 09:38:38

标签: java jvm bytecode goto

Java版本:1.8.0_73-b02 64位

为什么命令GOTO 10的字节码是A7 FF F7A7对应gotoFF F7对应10吗?

为什么A7 FF F7GOTO 10

1 个答案:

答案 0 :(得分:1)

这两个字节标识下一个预期指令的存储器地址。在这个bytecode listing中查看GOTO的描述:

  

转到branchoffset处的另一条指令(从无符号字节branchbyte1<<< 8 + branchbyte2构造的signed short)

或者,请参阅official javadoc

中的内容
  

无符号字节branchbyte1和branchbyte2用于构造带符号的16位分支偏移,其中branchoffset为(branchbyte1<< 8)| branchbyte2。执行从该goto指令的操作码的地址开始偏移。目标地址必须是包含此goto指令的方法中指令的操作码的地址。