Java 바이트 명령 세트 사용 상세 정보
do{
PC PC
if( ) ;
;
}while( )
조작수의 수량과 길이는 조작코드에 달려 있으며, 만약 조작수의 길이가 한 바이트를 초과하면 Big-Endian 순서로 저장됩니다 (고위는 전 바이트에 있습니다). 그 값은 (byte1<8) | byte2이어야 합니다.바이트 코드 명령 흐름은 단일 바이트 정렬입니다. "tableswitch"와 "lookupswitch"두 명령만 예외입니다. 그들의 조작 수는 비교적 특수합니다. 4바이트를 경계로 구분하기 때문에 상응하는 빈자리를 미리 남겨서 정렬해야 합니다.Java 가상 머신 운영 코드의 길이를 한 바이트로 제한하고 컴파일된 코드의 매개 변수 길이 정렬을 포기하는 것은 JVM이 일정한 성능 비용을 지불하더라도 짧고 정교한 컴파일 코드를 얻기 위해서이다.조작 코드는 한 바이트의 길이만 있기 때문에 지령집의 수량을 제한하고 데이터가 잘 정렬되었다고 가정하지 않았다. 이는 데이터가 한 바이트를 초과할 때 바이트에서 구체적인 데이터 구조를 재구성해야 하기 때문에 일부 성능을 손실할 수 있다는 것을 의미한다.데이터 유형 및 Java VM JVM의 명령 세트에서 대부분의 명령은 작업에 해당하는 데이터 유형 정보를 포함합니다.예를 들어iload 명령은 국부 변수표에서 int형 데이터를 작업 창고에 불러오고fload는float 형식의 데이터를 불러옵니다.대부분의 데이터 형식과 관련된 바이트 코드 명령에 대해 그들의 조작 코드 부호는 특수한 문자로 나타난다. i는 int 형식을 대표하고 l는 long을 대표하며 s는short를 대표하고 b는byte를 대표하며 c는char를 대표하고 f는float를 대표하며 d는double를 대표하고 a는reference를 대표한다.일부 단독 명령은 필요할 때 지원하지 않는 형식을 지원할 수 있는 형식으로 바꿀 수 있다.
로드 및 저장 명령 캐리어와 저장 명령은 창고 프레임의 국부 변수표와 조작 창고 사이에서 데이터를 왔다 갔다 전송하는 데 사용된다.1) 작업 스택에 로컬 변수를 로드하는 명령은 다음과 같습니다. iload, iload_,lload、lload_、float、 fload_、dload、dload_,aload、aload_.2) 작업 스택에서 로컬 변수 표에 값을 저장하는 명령:istore, istore_,lstore,lstore_,fstore,fstore_,dstore,dstore_,astore,astore_3) 상수를 작업 창고에 불러오는 명령어:bipush,sipush,ldc,ldc_w,ldc2_w,aconst_null,iconst_ml,iconst_,lconst_,fconst_,dconst_4) 로컬 변수 테이블의 액세스 인덱스 명령: wide 섹션에서 괄호로 끝나는 명령은 iload_, iload_0,iload_1 등, 이 몇 조의 지령은 모두 하나의 조작수를 가진 일반적인 지령이다.
연산 명령 산술 지령은 두 개의 조작 창고의 값에 대해 특정한 연산을 하고 결과를 다시 조작 창고 꼭대기에 저장하는 데 쓰인다.1) 덧셈 지령:iadd,ladd,fadd,dadd2) 뺄셈 지령:isub,lsub,fsub,dsub3) 곱셈 지령:imul,lmul,fmul,dmul4) 제법 지령:idiv,ldiv,fdiv,ddiv5) 나머지 지령:irem,lrem,frem,drem6) 반대 지령:ineg,leng,fneg,dneg7)위치 이동 지령:ishl,ishr,iushr,lshr,lushr 8) 비트 또는 지령:ior,lor9) 비트와 지령:iand,land10) 비트 또는 지령:ixor,lxor11) 국부 변수 증가 지령: iinc12) 비교 지령: dcmpg, dcmpl, fcmpg, fcmpl,lcmp
Java 가상 컴퓨터는 정형 데이터가 넘치는 상황을 명확하게 규정하지 않았지만, 정형 데이터를 처리할 때 제법과 나머지 명령만 0이 되면 가상 컴퓨터가 이상을 던질 수 있다고 규정했다.
로드 및 저장 명령 데이터를 불러오고 저장하는 명령은 읊다, 읊조리다 프레임의 국부 변수표와 조작 창고 사이를 왔다 갔다 전송하는 데 사용됩니다.1) 작업 스택에 로컬 변수를 로드하는 명령은 다음과 같습니다. iload, iload_,lload、lload_、float、 fload_、dload、dload_,aload、aload_.2) 작업 스택에서 로컬 변수 표에 값을 저장하는 명령:istore, istore_,lstore,lstore_,fstore,fstore_,dstore,dstore_,astore,astore_3) 상수를 작업 창고에 불러오는 명령어:bipush,sipush,ldc,ldc_w,ldc2_w,aconst_null,iconst_ml,iconst_,lconst_,fconst_,dconst_4) 로컬 변수 테이블의 액세스 인덱스 명령: wide 섹션에서 괄호로 끝나는 명령은 iload_, iload_0,iload_1 등, 이 몇 조의 지령은 모두 하나의 조작수를 가진 일반적인 지령이다.
연산 명령 산술 지령은 두 개의 조작 창고의 값에 대해 특정한 연산을 하고 결과를 다시 조작 창고 꼭대기에 저장하는 데 쓰인다.1) 덧셈 지령:iadd,ladd,fadd,dadd2) 뺄셈 지령:isub,lsub,fsub,dsub3) 곱셈 지령:imul,lmul,fmul,dmul4) 제법 지령:idiv,ldiv,fdiv,ddiv5) 나머지 지령:irem,lrem,frem,drem6) 반대 지령:ineg,leng,fneg,dneg7)위치 이동 지령:ishl,ishr,iushr,lshr,lushr 8) 비트 또는 지령:ior,lor9) 비트와 지령:iand,land10) 비트 또는 지령:ixor,lxor11) 국부 변수 증가 지령: iinc12) 비교 지령: dcmpg, dcmpl, fcmpg, fcmpl, lcmp 자바 가상 기기는 정형 데이터가 넘치는 상황을 명확하게 규정하지 않았지만 정형 데이터를 처리할 때 제법과 나머지 지령만 0이 되면 가상 기기가 이상을 던진다.
유형 변환 명령 유형 변환 명령은 두 가지 자바 가상 기기의 수치 유형을 서로 변환하는데 이런 조작은 일반적으로 사용자 코드의 현식 유형 변환 조작을 실현하는 데 사용된다.JVM은 넓은 유형 변환을 지원합니다(소범위 유형에서 큰 범위 유형으로 변환): 1) int 유형에서 long,float,double 유형 2) long 유형에서 float,double 유형 3) float에서 double 유형으로 변환 명령: i2b,i2c,i2s,l2i,f2i,f2l,d2l와 d2f. 좁은 유형 변환은 변환 결과에 따라 양과 음의 번호가 다르고 수량급이 다르며 변환 과정에서 수치의 정밀도를 잃을 수 있습니다.예를 들어 int나 long 형식이 정수 형식 T로 바뀔 때, 변환 과정은 최하위 N 바이트의 의외의 내용만 버리는 것입니다 (N은 형식 T의 데이터 형식 길이입니다)
객체 작성 및 작업 클래스 실례와 수조는 모두 대상이지만 자바 가상 기기는 클래스 실례와 수조의 창설과 조작에 서로 다른 바이트 명령을 사용한다.1) 실례를 만드는 지령: new2) 그룹을 만드는 지령: newarray,anewarray,multianewarray 3) 접근 필드 지령: getfield,putfield,getstatic,putstatic 4) 그룹 요소를 작업 창고 지령: baload,caload,saload,iaload,laload,daload,aaload 5) 작업 창고의 수치를 그룹 요소에 저장하여 실행: bastore,castore,sastore,iastore,fastore,dastore, 이aastore 6) 픽셀 길이 명령:arraylength 7) 검사 실례 형식 명령:instanceof,checkcast
작업 스택 관리 명령 창고를 직접 조작하는 지령: pop,pop2,dup,dup2,dup_x1,dup2_x1,dup_x2,dup2_x2 및 swap 제어 전송 명령은 JVM이 전송 명령을 제어하는 다음 명령이 아닌 지정된 명령에서 무조건 실행되도록 합니다.제어 이동 지령은 1) 조건 지점:ifeq,iflt,ifle,ifne,ifgt,ifge,ifnull,ifnotnull,if_cmpeq,if_icmpne,if_icmlt,if_icmpgt 등 2) 복합 조건 지점:tableswitch,lookupswitch 3) 무조건 지점:goto,goto_w,jsr,jsr_w,ret JVM에는 특수한 지령집 처리 int와 reference 유형의 조건 지점 비교 작업이 있습니다. 실체 값이null인지 아닌지를 명확하게 표시하지 않기 위해 전문적인 지령이null값을 검사합니다.boolean 유형과byte 유형,char 유형과short 유형의 조건 지점 비교 작업은 모두 int 유형의 비교 명령으로 완성되고,long,float,double 조건 지점 비교 작업은 상응하는 유형의 비교 연산 명령으로 연산 명령은 하나의 정형 값을 작업 창고에 되돌려주고 다음에 int 유형의 조건 비교 작업을 실행하여 전체 지점 전환을 완성한다.각종 유형의 비교는 최종적으로 int 유형의 비교 조작으로 바뀔 것이다.
방법 호출 및 반환 명령 invokevirtual 명령: 대상을 호출하는 실례적인 방법으로 대상의 실제 유형에 따라 분배(가상기 분배)를 한다.invokeinterface 명령: 인터페이스 호출 방법, 실행할 때 이 인터페이스 방법을 실현하는 대상을 검색하여 적당한 방법을 찾아 호출합니다.invokespecial: 특수 처리가 필요한 실례 방법을 호출합니다. 실례 초기화 방법, 개인 방법과 부류 방법을 포함합니다. invokestatic: 호출 방법(static) 방법은 반환 값의 유형에 따라 구분됩니다. ireturn(반환 값은boolean,byte,char,short와 int), lreturn,freturn,drturn과areturn, 다른return 공급void 방법, 실례 초기화 방법,클래스와 인터페이스의 클래스 초기화 i 방법을 사용합니다.
동기화 JVM은 메소드 레벨 동기화와 메소드 내부의 명령 시퀀스 동기화를 지원하는데 이 두 가지는 모두 모니터를 통해 이루어진다.방법급의 동기화는 은식적이어서 바이트 명령을 통해 제어할 필요가 없으며, 방법 호출과 반환 작업을 실현한다.메소드 상수 풀의 메소드 구조에서 VM의 ACC_SYNCHRONIZED 플래그가 동기화 방법인지 여부를 구분합니다.방법이 호출될 때 호출 명령은 이 로고가 설정되었는지 검사합니다. 만약 설정되면 실행 라인이 모니터를 가지고 있는 다음에 방법을 실행하고 마지막에 방법을 완성할 때 모니터를 방출합니다.명령 집합 시퀀스를 동기화합니다. 일반적으로synchronized 블록에 표시됩니다. JVM 명령에는 모니터와 모니터xit가 있어synchronized의 의미를 지원합니다.구조화 잠금은 방법이 호출되는 동안 모든 모니터 종료가 앞의 모니터 진입과 일치하는 상황을 가리킨다.JVM은 다음과 같은 두 가지 규칙을 통해 구조화된 자물쇠의 성립을 보장한다(T는 한 라인을 나타내고 M은 하나의 모니터를 대표한다): 1) T가 방법이 실행될 때 M을 소지하는 횟수는 T가 방법이 완성될 때 방출하는 M 횟수와 같아야 한다 2) 그 어느 순간에도 T가 M을 소지하는 횟수보다 많은 횟수가 발생하지 않는다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
연산 명령 산술 지령은 두 개의 조작 창고의 값에 대해 특정한 연산을 하고 결과를 다시 조작 창고 꼭대기에 저장하는 데 쓰인다.1) 덧셈 지령:iadd,ladd,fadd,dadd2) 뺄셈 지령:isub,lsub,fsub,dsub3) 곱셈 지령:imul,lmul,fmul,dmul4) 제법 지령:idiv,ldiv,fdiv,ddiv5) 나머지 지령:irem,lrem,frem,drem6) 반대 지령:ineg,leng,fneg,dneg7)위치 이동 지령:ishl,ishr,iushr,lshr,lushr 8) 비트 또는 지령:ior,lor9) 비트와 지령:iand,land10) 비트 또는 지령:ixor,lxor11) 국부 변수 증가 지령: iinc12) 비교 지령: dcmpg, dcmpl, fcmpg, fcmpl,lcmp
Java 가상 컴퓨터는 정형 데이터가 넘치는 상황을 명확하게 규정하지 않았지만, 정형 데이터를 처리할 때 제법과 나머지 명령만 0이 되면 가상 컴퓨터가 이상을 던질 수 있다고 규정했다.
로드 및 저장 명령 데이터를 불러오고 저장하는 명령은 읊다, 읊조리다 프레임의 국부 변수표와 조작 창고 사이를 왔다 갔다 전송하는 데 사용됩니다.1) 작업 스택에 로컬 변수를 로드하는 명령은 다음과 같습니다. iload, iload_,lload、lload_、float、 fload_、dload、dload_,aload、aload_.2) 작업 스택에서 로컬 변수 표에 값을 저장하는 명령:istore, istore_,lstore,lstore_,fstore,fstore_,dstore,dstore_,astore,astore_3) 상수를 작업 창고에 불러오는 명령어:bipush,sipush,ldc,ldc_w,ldc2_w,aconst_null,iconst_ml,iconst_,lconst_,fconst_,dconst_4) 로컬 변수 테이블의 액세스 인덱스 명령: wide 섹션에서 괄호로 끝나는 명령은 iload_, iload_0,iload_1 등, 이 몇 조의 지령은 모두 하나의 조작수를 가진 일반적인 지령이다.
연산 명령 산술 지령은 두 개의 조작 창고의 값에 대해 특정한 연산을 하고 결과를 다시 조작 창고 꼭대기에 저장하는 데 쓰인다.1) 덧셈 지령:iadd,ladd,fadd,dadd2) 뺄셈 지령:isub,lsub,fsub,dsub3) 곱셈 지령:imul,lmul,fmul,dmul4) 제법 지령:idiv,ldiv,fdiv,ddiv5) 나머지 지령:irem,lrem,frem,drem6) 반대 지령:ineg,leng,fneg,dneg7)위치 이동 지령:ishl,ishr,iushr,lshr,lushr 8) 비트 또는 지령:ior,lor9) 비트와 지령:iand,land10) 비트 또는 지령:ixor,lxor11) 국부 변수 증가 지령: iinc12) 비교 지령: dcmpg, dcmpl, fcmpg, fcmpl, lcmp 자바 가상 기기는 정형 데이터가 넘치는 상황을 명확하게 규정하지 않았지만 정형 데이터를 처리할 때 제법과 나머지 지령만 0이 되면 가상 기기가 이상을 던진다.
유형 변환 명령 유형 변환 명령은 두 가지 자바 가상 기기의 수치 유형을 서로 변환하는데 이런 조작은 일반적으로 사용자 코드의 현식 유형 변환 조작을 실현하는 데 사용된다.JVM은 넓은 유형 변환을 지원합니다(소범위 유형에서 큰 범위 유형으로 변환): 1) int 유형에서 long,float,double 유형 2) long 유형에서 float,double 유형 3) float에서 double 유형으로 변환 명령: i2b,i2c,i2s,l2i,f2i,f2l,d2l와 d2f. 좁은 유형 변환은 변환 결과에 따라 양과 음의 번호가 다르고 수량급이 다르며 변환 과정에서 수치의 정밀도를 잃을 수 있습니다.예를 들어 int나 long 형식이 정수 형식 T로 바뀔 때, 변환 과정은 최하위 N 바이트의 의외의 내용만 버리는 것입니다 (N은 형식 T의 데이터 형식 길이입니다)
객체 작성 및 작업 클래스 실례와 수조는 모두 대상이지만 자바 가상 기기는 클래스 실례와 수조의 창설과 조작에 서로 다른 바이트 명령을 사용한다.1) 실례를 만드는 지령: new2) 그룹을 만드는 지령: newarray,anewarray,multianewarray 3) 접근 필드 지령: getfield,putfield,getstatic,putstatic 4) 그룹 요소를 작업 창고 지령: baload,caload,saload,iaload,laload,daload,aaload 5) 작업 창고의 수치를 그룹 요소에 저장하여 실행: bastore,castore,sastore,iastore,fastore,dastore, 이aastore 6) 픽셀 길이 명령:arraylength 7) 검사 실례 형식 명령:instanceof,checkcast
작업 스택 관리 명령 창고를 직접 조작하는 지령: pop,pop2,dup,dup2,dup_x1,dup2_x1,dup_x2,dup2_x2 및 swap 제어 전송 명령은 JVM이 전송 명령을 제어하는 다음 명령이 아닌 지정된 명령에서 무조건 실행되도록 합니다.제어 이동 지령은 1) 조건 지점:ifeq,iflt,ifle,ifne,ifgt,ifge,ifnull,ifnotnull,if_cmpeq,if_icmpne,if_icmlt,if_icmpgt 등 2) 복합 조건 지점:tableswitch,lookupswitch 3) 무조건 지점:goto,goto_w,jsr,jsr_w,ret JVM에는 특수한 지령집 처리 int와 reference 유형의 조건 지점 비교 작업이 있습니다. 실체 값이null인지 아닌지를 명확하게 표시하지 않기 위해 전문적인 지령이null값을 검사합니다.boolean 유형과byte 유형,char 유형과short 유형의 조건 지점 비교 작업은 모두 int 유형의 비교 명령으로 완성되고,long,float,double 조건 지점 비교 작업은 상응하는 유형의 비교 연산 명령으로 연산 명령은 하나의 정형 값을 작업 창고에 되돌려주고 다음에 int 유형의 조건 비교 작업을 실행하여 전체 지점 전환을 완성한다.각종 유형의 비교는 최종적으로 int 유형의 비교 조작으로 바뀔 것이다.
방법 호출 및 반환 명령 invokevirtual 명령: 대상을 호출하는 실례적인 방법으로 대상의 실제 유형에 따라 분배(가상기 분배)를 한다.invokeinterface 명령: 인터페이스 호출 방법, 실행할 때 이 인터페이스 방법을 실현하는 대상을 검색하여 적당한 방법을 찾아 호출합니다.invokespecial: 특수 처리가 필요한 실례 방법을 호출합니다. 실례 초기화 방법, 개인 방법과 부류 방법을 포함합니다. invokestatic: 호출 방법(static) 방법은 반환 값의 유형에 따라 구분됩니다. ireturn(반환 값은boolean,byte,char,short와 int), lreturn,freturn,drturn과areturn, 다른return 공급void 방법, 실례 초기화 방법,클래스와 인터페이스의 클래스 초기화 i 방법을 사용합니다.
동기화 JVM은 메소드 레벨 동기화와 메소드 내부의 명령 시퀀스 동기화를 지원하는데 이 두 가지는 모두 모니터를 통해 이루어진다.방법급의 동기화는 은식적이어서 바이트 명령을 통해 제어할 필요가 없으며, 방법 호출과 반환 작업을 실현한다.메소드 상수 풀의 메소드 구조에서 VM의 ACC_SYNCHRONIZED 플래그가 동기화 방법인지 여부를 구분합니다.방법이 호출될 때 호출 명령은 이 로고가 설정되었는지 검사합니다. 만약 설정되면 실행 라인이 모니터를 가지고 있는 다음에 방법을 실행하고 마지막에 방법을 완성할 때 모니터를 방출합니다.명령 집합 시퀀스를 동기화합니다. 일반적으로synchronized 블록에 표시됩니다. JVM 명령에는 모니터와 모니터xit가 있어synchronized의 의미를 지원합니다.구조화 잠금은 방법이 호출되는 동안 모든 모니터 종료가 앞의 모니터 진입과 일치하는 상황을 가리킨다.JVM은 다음과 같은 두 가지 규칙을 통해 구조화된 자물쇠의 성립을 보장한다(T는 한 라인을 나타내고 M은 하나의 모니터를 대표한다): 1) T가 방법이 실행될 때 M을 소지하는 횟수는 T가 방법이 완성될 때 방출하는 M 횟수와 같아야 한다 2) 그 어느 순간에도 T가 M을 소지하는 횟수보다 많은 횟수가 발생하지 않는다
연산 명령 산술 지령은 두 개의 조작 창고의 값에 대해 특정한 연산을 하고 결과를 다시 조작 창고 꼭대기에 저장하는 데 쓰인다.1) 덧셈 지령:iadd,ladd,fadd,dadd2) 뺄셈 지령:isub,lsub,fsub,dsub3) 곱셈 지령:imul,lmul,fmul,dmul4) 제법 지령:idiv,ldiv,fdiv,ddiv5) 나머지 지령:irem,lrem,frem,drem6) 반대 지령:ineg,leng,fneg,dneg7)위치 이동 지령:ishl,ishr,iushr,lshr,lushr 8) 비트 또는 지령:ior,lor9) 비트와 지령:iand,land10) 비트 또는 지령:ixor,lxor11) 국부 변수 증가 지령: iinc12) 비교 지령: dcmpg, dcmpl, fcmpg, fcmpl, lcmp 자바 가상 기기는 정형 데이터가 넘치는 상황을 명확하게 규정하지 않았지만 정형 데이터를 처리할 때 제법과 나머지 지령만 0이 되면 가상 기기가 이상을 던진다.
유형 변환 명령 유형 변환 명령은 두 가지 자바 가상 기기의 수치 유형을 서로 변환하는데 이런 조작은 일반적으로 사용자 코드의 현식 유형 변환 조작을 실현하는 데 사용된다.JVM은 넓은 유형 변환을 지원합니다(소범위 유형에서 큰 범위 유형으로 변환): 1) int 유형에서 long,float,double 유형 2) long 유형에서 float,double 유형 3) float에서 double 유형으로 변환 명령: i2b,i2c,i2s,l2i,f2i,f2l,d2l와 d2f. 좁은 유형 변환은 변환 결과에 따라 양과 음의 번호가 다르고 수량급이 다르며 변환 과정에서 수치의 정밀도를 잃을 수 있습니다.예를 들어 int나 long 형식이 정수 형식 T로 바뀔 때, 변환 과정은 최하위 N 바이트의 의외의 내용만 버리는 것입니다 (N은 형식 T의 데이터 형식 길이입니다)
객체 작성 및 작업 클래스 실례와 수조는 모두 대상이지만 자바 가상 기기는 클래스 실례와 수조의 창설과 조작에 서로 다른 바이트 명령을 사용한다.1) 실례를 만드는 지령: new2) 그룹을 만드는 지령: newarray,anewarray,multianewarray 3) 접근 필드 지령: getfield,putfield,getstatic,putstatic 4) 그룹 요소를 작업 창고 지령: baload,caload,saload,iaload,laload,daload,aaload 5) 작업 창고의 수치를 그룹 요소에 저장하여 실행: bastore,castore,sastore,iastore,fastore,dastore, 이aastore 6) 픽셀 길이 명령:arraylength 7) 검사 실례 형식 명령:instanceof,checkcast
작업 스택 관리 명령 창고를 직접 조작하는 지령: pop,pop2,dup,dup2,dup_x1,dup2_x1,dup_x2,dup2_x2 및 swap 제어 전송 명령은 JVM이 전송 명령을 제어하는 다음 명령이 아닌 지정된 명령에서 무조건 실행되도록 합니다.제어 이동 지령은 1) 조건 지점:ifeq,iflt,ifle,ifne,ifgt,ifge,ifnull,ifnotnull,if_cmpeq,if_icmpne,if_icmlt,if_icmpgt 등 2) 복합 조건 지점:tableswitch,lookupswitch 3) 무조건 지점:goto,goto_w,jsr,jsr_w,ret JVM에는 특수한 지령집 처리 int와 reference 유형의 조건 지점 비교 작업이 있습니다. 실체 값이null인지 아닌지를 명확하게 표시하지 않기 위해 전문적인 지령이null값을 검사합니다.boolean 유형과byte 유형,char 유형과short 유형의 조건 지점 비교 작업은 모두 int 유형의 비교 명령으로 완성되고,long,float,double 조건 지점 비교 작업은 상응하는 유형의 비교 연산 명령으로 연산 명령은 하나의 정형 값을 작업 창고에 되돌려주고 다음에 int 유형의 조건 비교 작업을 실행하여 전체 지점 전환을 완성한다.각종 유형의 비교는 최종적으로 int 유형의 비교 조작으로 바뀔 것이다.
방법 호출 및 반환 명령 invokevirtual 명령: 대상을 호출하는 실례적인 방법으로 대상의 실제 유형에 따라 분배(가상기 분배)를 한다.invokeinterface 명령: 인터페이스 호출 방법, 실행할 때 이 인터페이스 방법을 실현하는 대상을 검색하여 적당한 방법을 찾아 호출합니다.invokespecial: 특수 처리가 필요한 실례 방법을 호출합니다. 실례 초기화 방법, 개인 방법과 부류 방법을 포함합니다. invokestatic: 호출 방법(static) 방법은 반환 값의 유형에 따라 구분됩니다. ireturn(반환 값은boolean,byte,char,short와 int), lreturn,freturn,drturn과areturn, 다른return 공급void 방법, 실례 초기화 방법,클래스와 인터페이스의 클래스 초기화 i 방법을 사용합니다.
동기화 JVM은 메소드 레벨 동기화와 메소드 내부의 명령 시퀀스 동기화를 지원하는데 이 두 가지는 모두 모니터를 통해 이루어진다.방법급의 동기화는 은식적이어서 바이트 명령을 통해 제어할 필요가 없으며, 방법 호출과 반환 작업을 실현한다.메소드 상수 풀의 메소드 구조에서 VM의 ACC_SYNCHRONIZED 플래그가 동기화 방법인지 여부를 구분합니다.방법이 호출될 때 호출 명령은 이 로고가 설정되었는지 검사합니다. 만약 설정되면 실행 라인이 모니터를 가지고 있는 다음에 방법을 실행하고 마지막에 방법을 완성할 때 모니터를 방출합니다.명령 집합 시퀀스를 동기화합니다. 일반적으로synchronized 블록에 표시됩니다. JVM 명령에는 모니터와 모니터xit가 있어synchronized의 의미를 지원합니다.구조화 잠금은 방법이 호출되는 동안 모든 모니터 종료가 앞의 모니터 진입과 일치하는 상황을 가리킨다.JVM은 다음과 같은 두 가지 규칙을 통해 구조화된 자물쇠의 성립을 보장한다(T는 한 라인을 나타내고 M은 하나의 모니터를 대표한다): 1) T가 방법이 실행될 때 M을 소지하는 횟수는 T가 방법이 완성될 때 방출하는 M 횟수와 같아야 한다 2) 그 어느 순간에도 T가 M을 소지하는 횟수보다 많은 횟수가 발생하지 않는다
객체 작성 및 작업 클래스 실례와 수조는 모두 대상이지만 자바 가상 기기는 클래스 실례와 수조의 창설과 조작에 서로 다른 바이트 명령을 사용한다.1) 실례를 만드는 지령: new2) 그룹을 만드는 지령: newarray,anewarray,multianewarray 3) 접근 필드 지령: getfield,putfield,getstatic,putstatic 4) 그룹 요소를 작업 창고 지령: baload,caload,saload,iaload,laload,daload,aaload 5) 작업 창고의 수치를 그룹 요소에 저장하여 실행: bastore,castore,sastore,iastore,fastore,dastore, 이aastore 6) 픽셀 길이 명령:arraylength 7) 검사 실례 형식 명령:instanceof,checkcast
작업 스택 관리 명령 창고를 직접 조작하는 지령: pop,pop2,dup,dup2,dup_x1,dup2_x1,dup_x2,dup2_x2 및 swap 제어 전송 명령은 JVM이 전송 명령을 제어하는 다음 명령이 아닌 지정된 명령에서 무조건 실행되도록 합니다.제어 이동 지령은 1) 조건 지점:ifeq,iflt,ifle,ifne,ifgt,ifge,ifnull,ifnotnull,if_cmpeq,if_icmpne,if_icmlt,if_icmpgt 등 2) 복합 조건 지점:tableswitch,lookupswitch 3) 무조건 지점:goto,goto_w,jsr,jsr_w,ret JVM에는 특수한 지령집 처리 int와 reference 유형의 조건 지점 비교 작업이 있습니다. 실체 값이null인지 아닌지를 명확하게 표시하지 않기 위해 전문적인 지령이null값을 검사합니다.boolean 유형과byte 유형,char 유형과short 유형의 조건 지점 비교 작업은 모두 int 유형의 비교 명령으로 완성되고,long,float,double 조건 지점 비교 작업은 상응하는 유형의 비교 연산 명령으로 연산 명령은 하나의 정형 값을 작업 창고에 되돌려주고 다음에 int 유형의 조건 비교 작업을 실행하여 전체 지점 전환을 완성한다.각종 유형의 비교는 최종적으로 int 유형의 비교 조작으로 바뀔 것이다.
방법 호출 및 반환 명령 invokevirtual 명령: 대상을 호출하는 실례적인 방법으로 대상의 실제 유형에 따라 분배(가상기 분배)를 한다.invokeinterface 명령: 인터페이스 호출 방법, 실행할 때 이 인터페이스 방법을 실현하는 대상을 검색하여 적당한 방법을 찾아 호출합니다.invokespecial: 특수 처리가 필요한 실례 방법을 호출합니다. 실례 초기화 방법, 개인 방법과 부류 방법을 포함합니다. invokestatic: 호출 방법(static) 방법은 반환 값의 유형에 따라 구분됩니다. ireturn(반환 값은boolean,byte,char,short와 int), lreturn,freturn,drturn과areturn, 다른return 공급void 방법, 실례 초기화 방법,클래스와 인터페이스의 클래스 초기화 i 방법을 사용합니다.
동기화 JVM은 메소드 레벨 동기화와 메소드 내부의 명령 시퀀스 동기화를 지원하는데 이 두 가지는 모두 모니터를 통해 이루어진다.방법급의 동기화는 은식적이어서 바이트 명령을 통해 제어할 필요가 없으며, 방법 호출과 반환 작업을 실현한다.메소드 상수 풀의 메소드 구조에서 VM의 ACC_SYNCHRONIZED 플래그가 동기화 방법인지 여부를 구분합니다.방법이 호출될 때 호출 명령은 이 로고가 설정되었는지 검사합니다. 만약 설정되면 실행 라인이 모니터를 가지고 있는 다음에 방법을 실행하고 마지막에 방법을 완성할 때 모니터를 방출합니다.명령 집합 시퀀스를 동기화합니다. 일반적으로synchronized 블록에 표시됩니다. JVM 명령에는 모니터와 모니터xit가 있어synchronized의 의미를 지원합니다.구조화 잠금은 방법이 호출되는 동안 모든 모니터 종료가 앞의 모니터 진입과 일치하는 상황을 가리킨다.JVM은 다음과 같은 두 가지 규칙을 통해 구조화된 자물쇠의 성립을 보장한다(T는 한 라인을 나타내고 M은 하나의 모니터를 대표한다): 1) T가 방법이 실행될 때 M을 소지하는 횟수는 T가 방법이 완성될 때 방출하는 M 횟수와 같아야 한다 2) 그 어느 순간에도 T가 M을 소지하는 횟수보다 많은 횟수가 발생하지 않는다
방법 호출 및 반환 명령 invokevirtual 명령: 대상을 호출하는 실례적인 방법으로 대상의 실제 유형에 따라 분배(가상기 분배)를 한다.invokeinterface 명령: 인터페이스 호출 방법, 실행할 때 이 인터페이스 방법을 실현하는 대상을 검색하여 적당한 방법을 찾아 호출합니다.invokespecial: 특수 처리가 필요한 실례 방법을 호출합니다. 실례 초기화 방법, 개인 방법과 부류 방법을 포함합니다. invokestatic: 호출 방법(static) 방법은 반환 값의 유형에 따라 구분됩니다. ireturn(반환 값은boolean,byte,char,short와 int), lreturn,freturn,drturn과areturn, 다른return 공급void 방법, 실례 초기화 방법,클래스와 인터페이스의 클래스 초기화 i 방법을 사용합니다.
동기화 JVM은 메소드 레벨 동기화와 메소드 내부의 명령 시퀀스 동기화를 지원하는데 이 두 가지는 모두 모니터를 통해 이루어진다.방법급의 동기화는 은식적이어서 바이트 명령을 통해 제어할 필요가 없으며, 방법 호출과 반환 작업을 실현한다.메소드 상수 풀의 메소드 구조에서 VM의 ACC_SYNCHRONIZED 플래그가 동기화 방법인지 여부를 구분합니다.방법이 호출될 때 호출 명령은 이 로고가 설정되었는지 검사합니다. 만약 설정되면 실행 라인이 모니터를 가지고 있는 다음에 방법을 실행하고 마지막에 방법을 완성할 때 모니터를 방출합니다.명령 집합 시퀀스를 동기화합니다. 일반적으로synchronized 블록에 표시됩니다. JVM 명령에는 모니터와 모니터xit가 있어synchronized의 의미를 지원합니다.구조화 잠금은 방법이 호출되는 동안 모든 모니터 종료가 앞의 모니터 진입과 일치하는 상황을 가리킨다.JVM은 다음과 같은 두 가지 규칙을 통해 구조화된 자물쇠의 성립을 보장한다(T는 한 라인을 나타내고 M은 하나의 모니터를 대표한다): 1) T가 방법이 실행될 때 M을 소지하는 횟수는 T가 방법이 완성될 때 방출하는 M 횟수와 같아야 한다 2) 그 어느 순간에도 T가 M을 소지하는 횟수보다 많은 횟수가 발생하지 않는다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.