JVM如何确保跳转指令(jsr和goto)跳转到指令而不是数据或指令参数?
发布于 2014-02-20 00:20:59
这是字节码验证器的一部分。
在Java字节码中,指令都有一个已知的长度,必须一个接一个地从偏移量0开始出现,所以您总是可以静态地知道每条指令的起始位置。因此,这只是一个简单的问题,确保跳转目标是有效指令的开始。与Dalvik或x86不同的是,不允许您跳入指令的中间。
您可以在这里找到验证器的源代码。实际上有两个验证器。这是一个经典的验证器,用于没有StackMapTable的代码(这包括包含jsr的所有代码)。
https://stackoverflow.com/questions/21895112
复制相似问题