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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字节码中“GOTO”之后的数字是多少?相关的知识,希望对你有一定的参考价值。

Java版本:1.8.0_73-b02 64位

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

为什么A7 FF F7GOTO 10

答案

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

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

或者,请参阅official javadoc

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

以上是关于Java字节码中“GOTO”之后的数字是多少?的主要内容,如果未能解决你的问题,请参考以下文章

一个字节是多少?

在字节码中存储值[关闭]

Java 中,数字,汉字,英文字母,...占多少字节

检测 Java 字节码中的循环 - 区分后端类型

反射机制

字节码中的类型