JVM字节码跳转指令

时间:2014-02-19 23:45:46

标签: bytecode goto

JVM如何确保跳​​转指令(jsrgoto)跳转到指令而不是数据或指令参数?

1 个答案:

答案 0 :(得分:2)

这是字节码验证器的一部分。

在Java字节码中,指令都具有已知长度,并且必须从偏移0开始一个接一个地出现,因此您始终可以静态地告知每条指令的开始位置。因此,确保跳转目标是有效指令的开始只是一个简单的问题。与Dalvik或x86不同,您不能跳到指令的中间。

You can find the source code for the verifier here.实际上有两个验证者。这是经典的verfier,用于没有StackMapTable的代码(这包括所有包含jsr的代码。)