JVM字节码跳转指令

3

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

1个回答

2
这是字节码验证器的一部分。
在Java字节码中,指令都有已知的长度,并且必须从偏移量0开始依次出现,因此您始终可以静态地确定每个指令的开头位置。因此,只需要确保跳转目标是有效指令的开头即可。与Dalvik或x86不同,您不能跳转到指令的中间。
实际上有两个验证器。这是经典验证器,用于没有StackMapTable(包括所有包含jsr的代码)的代码。您可以在此处找到验证器的源代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接