1
점프 명령 (jsr
및 goto
)이 데이터 또는 명령 인수가 아닌 점프를 JVM이 어떻게 보장합니까?JVM 바이트 코드 점프 명령
점프 명령 (jsr
및 goto
)이 데이터 또는 명령 인수가 아닌 점프를 JVM이 어떻게 보장합니까?JVM 바이트 코드 점프 명령
바이트 코드 검증기의 일부입니다.
Java 바이트 코드에서 명령어는 모두 알려진 길이를 가지며 오프셋 0에서 시작하여 하나씩 나타나야하므로 각 명령어의 시작 부분이 언제 정적인지 항상 알 수 있습니다. 따라서 점프 대상이 유효한 명령어의 시작인지 확인하는 것은 간단합니다. Dalvik 또는 x86과 달리, 당신은 명령의 중간에 뛰어들 수 없습니다.
You can find the source code for the verifier here. 실제로 두 개의 확인자가 있습니다. 이 코드는 StackMapTable이없는 코드 (여기에는 jsr
을 포함하는 모든 코드가 포함됨)에 사용되는 클래식 verfier입니다.