한동안 Java를 공부한 후에는 모두가 jvm의 중요성을 이해하게 되었다고 생각합니다. 그러나 JVM의 명령 시스템에 대해서는 잘 알지 못할 수도 있습니다. 말 그대로 지시를 부르는 도구이다. 몇 가지 구체적인 내용 소개에 관해서는 아래에서 보여드리고 JVM Register에 대해 함께 공유해보겠습니다.
1. 교수체계 설명
JVM 명령 시스템은 다른 컴퓨터 명령 시스템과 매우 유사합니다. 동시에 Java 명령어에는 opcode와 피연산자라는 두 부분도 포함됩니다. Opcode는 필요에 따라 길이가 결정되는 피연산자가 뒤따르는 8비트 이진수입니다. 연산 코드는 명령어 연산의 성격을 지정하는 데 사용됩니다(여기서는 어셈블리 기호 형식으로 설명합니다). 예를 들어 iload는 메모리에서 정수를 로드하는 것을 의미하고 anewarray는 새 배열에 공간을 할당하는 것을 의미하며 iand는 다음을 의미합니다. 두 정수의 "AND" ,ret는 메소드 호출에서 반환된 프로세스 제어를 나타냅니다. 길이가 8비트를 초과하면 피연산자를 여러 바이트로 나누어 저장합니다. 이러한 상황을 위해 JVM은 "bigendian" 인코딩 방법을 채택합니다. 즉, 높은 비트가 낮은 바이트에 위치합니다. 이러한 상황은 Motorola 및 RISCCPU에서 사용하는 인코딩 방법과 동일하지만 Intel에서 사용하는 "littleendian" 인코딩 방법, 즉 하위 비트가 하위 바이트를 저장하는 것과는 다릅니다.
java 명령 시스템은 Java 언어를 구현하기 위해 설계되었습니다. 여기에는 메소드 호출 및 다중 우선순위 시스템 모니터링에 대한 지침이 포함되어 있습니다. JVM의 8비트 opcode 길이로 인해 JVM은 최대 256개의 명령어를 사용하게 되었으며 현재는 160개가 넘는 명령어가 사용됩니다.
2. 일반적으로 사용되는 레지스터
모든 CPU에는 프로세서에 필요한 시스템 상태와 정보를 보유하는 레지스터 세트가 포함되어 있습니다. 가상 머신이 더 많은 레지스터를 정의하면 스택이나 메모리에 액세스하지 않고도 레지스터에서 더 많은 정보를 얻을 수 있으므로 실행 속도가 향상됩니다. 그러나 가상 머신의 레지스터 수가 실제 CPU 수를 초과하는 경우 가상 머신을 구현할 때 기존 메모리로 레지스터를 시뮬레이션하는 데 많은 프로세서 시간이 소비되어 실제로 가상 머신의 효율성이 저하됩니다. . 이를 위해 JVM은 가장 일반적으로 사용되는 4개의 레지스터만 설정합니다. 그들은:
(1) PC 프로그램 카운터
(2) optop 피연산자 스택 상단 포인터
(3) 프레임 현재 실행 환경 포인터
(4) vars는 현재 실행 환경의 첫 번째 지역 변수에 대한 포인터를 가리킵니다.
모든 레지스터는 32비트입니다. pc는 프로그램 실행을 기록하는 데 사용됩니다. optop, 프레임 및 vars는 Java 스택 영역에 대한 포인터를 기록하는 데 사용됩니다.
위는 Java의 JVM 교육 시스템에 대한 소개입니다. 이 기사는 주로 이론적 지식 포인트에 중점을 두고 있으며, 나중에 지식을 복습하기 위해 문서를 저장할 수 있습니다.