Java版本:1.8.0_73-b02 64位
为什么命令GOTO 10
的字节码是A7 FF F7
?
A7
对应goto
,FF F7
对应10
吗?
为什么A7 FF F7
是GOTO 10
?
答案 0 :(得分:1)
这两个字节标识下一个预期指令的存储器地址。在这个bytecode listing中查看GOTO的描述:
转到branchoffset处的另一条指令(从无符号字节branchbyte1<<< 8 + branchbyte2构造的signed short)
或者,请参阅official javadoc
中的内容无符号字节branchbyte1和branchbyte2用于构造带符号的16位分支偏移,其中branchoffset为(branchbyte1<< 8)| branchbyte2。执行从该goto指令的操作码的地址开始偏移。目标地址必须是包含此goto指令的方法中指令的操作码的地址。