Java字节码中“GOTO”之后的数字是多少?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字节码中“GOTO”之后的数字是多少?相关的知识,希望对你有一定的参考价值。
Java版本:1.8.0_73-b02 64位
为什么命令GOTO 10
的字节码是A7 FF F7
?
A7
对应goto
,FF F7
对应10
吗?
为什么A7 FF F7
是GOTO 10
?
答案
这两个字节标识下一个预期指令的存储器地址。在这个bytecode listing中查看GOTO的描述:
转到branchoffset处的另一条指令(带符号的short由无符号字节构成branchbyte1 << 8 + branchbyte2)
或者,请参阅official javadoc
无符号字节branchbyte1和branchbyte2用于构造带符号的16位分支偏移,其中branchoffset为(branchbyte1 << 8)| branchbyte2。执行从该goto指令的操作码的地址开始偏移。目标地址必须是包含此goto指令的方法中的指令的操作码的地址。
以上是关于Java字节码中“GOTO”之后的数字是多少?的主要内容,如果未能解决你的问题,请参考以下文章