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

问题描述 投票:0回答:1

Java版本:1.8.0_73-b02 64位

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

为什么A7 FF F7GOTO 10

java jvm bytecode goto
1个回答
1
投票

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

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

或者,请参阅official javadoc

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

© www.soinside.com 2019 - 2024. All rights reserved.