>  기사  >  백엔드 개발  >  .NET Framework 중간 언어 IL 지침 컬렉션

.NET Framework 중간 언어 IL 지침 컬렉션

黄舟
黄舟원래의
2017-02-22 10:40:522108검색

IL은 .NET Framework의 Intermediate Language의 약어입니다. .NET 프레임워크에서 제공하는 컴파일러를 이용하면 소스 프로그램을 .exe나 .dll 파일로 직접 컴파일할 수 있습니다. 그러나 이때 컴파일된 프로그램 코드는 CPU에서 직접 실행할 수 있는 기계어 코드가 아니라, 중간 언어 IL(중간 언어) 코드입니다.

이름 설명
추가 두 값을 추가하고 결과를 푸시합니다. 계산 스택에서.
Add.Ovf 두 정수를 더하고 오버플로 검사를 수행한 후 결과를 계산 스택에 푸시합니다.
Add.Ovf.Un 두 개의 부호 없는 정수 값을 더하고 오버플로 검사를 수행한 후 결과를 평가 스택에 푸시합니다.
And 두 값의 비트 단위 AND를 계산하고 결과를 평가 스택에 푸시합니다.
Arglist 현재 메서드의 인수 목록에 대한 관리되지 않는 포인터를 반환합니다.
Beq 두 값이 동일하면 제어권을 대상 명령어로 넘깁니다.
Beq.S 두 값이 동일하면 대상 명령어(약식)로 제어를 전달합니다.
Bge 첫 번째 값이 두 번째 값보다 크거나 같으면 제어를 대상 명령어로 전송합니다.
Bge.S 첫 번째 값이 두 번째 값보다 크거나 같으면 제어를 대상 명령(약식)으로 전송합니다.
Bge.Un 부호 없는 정수 값이나 정렬할 수 없는 부동 소수점 값을 비교할 때 첫 번째 값이 두 번째 값보다 크면 Control이 다음으로 넘어갑니다. 목표 지시.
Bge.Un.S 부호 없는 정수 값이나 정렬 불가능한 부동 소수점 값을 비교할 때 첫 번째 값이 두 번째 값보다 크면 제어권을 넘깁니다. 대상 명령어(약식)로 이동합니다.
Bgt 첫 번째 값이 두 번째 값보다 크면 제어를 대상 명령어로 전송합니다.
Bgt.S 첫 번째 값이 두 번째 값보다 크면 제어를 대상 명령(약식)으로 전송합니다.
Bgt.Un 부호 없는 정수 값이나 정렬할 수 없는 부동 소수점 값을 비교할 때 첫 번째 값이 두 번째 값보다 크면 Control이 다음으로 넘어갑니다. 목표 지시.
Bgt.Un.S 부호 없는 정수 값이나 정렬 불가능한 부동 소수점 값을 비교할 때 첫 번째 값이 두 번째 값보다 크면 제어권을 넘깁니다. 대상 명령어(약식)로 이동합니다.
Ble 첫 번째 값이 두 번째 값보다 작거나 같으면 제어를 대상 명령어로 전달합니다.
Ble.S 첫 번째 값이 두 번째 값보다 작거나 같으면 제어를 대상 명령어(약식)로 전달합니다.
Ble.Un 부호 없는 정수 값이나 정렬 불가능한 부동 소수점 값을 비교할 때 첫 번째 값이 두 번째 값보다 작거나 같으면 제어한다. 대상 명령어로 전송됩니다.
Ble.Un.S 부호 없는 정수 값이나 정렬 불가능한 부동 소수점 값을 비교할 때 첫 번째 값이 두 번째 값보다 작거나 같은 경우, 그런 다음 제어가 대상 명령(약식)으로 전송됩니다.
Blt 첫 번째 값이 두 번째 값보다 작으면 제어를 대상 명령어로 전달합니다.
Blt.S 첫 번째 값이 두 번째 값보다 작으면 제어를 대상 명령어(약식)로 전달합니다.
Blt.Un 부호 없는 정수 값이나 정렬 불가능한 부동 소수점 값을 비교할 때 첫 번째 값이 두 번째 값보다 작으면 Control이 다음으로 넘어갑니다. 목표 지시.
Blt.Un.S 부호 없는 정수 값이나 정렬 불가능한 부동 소수점 값을 비교할 때 첫 번째 값이 두 번째 값보다 작으면 제어권을 넘깁니다. 대상 명령어(약식)로 이동합니다.
Bne.Un 두 개의 부호 없는 정수 값이나 정렬 불가능한 부동 소수점 값이 같지 않으면 제어를 대상 명령어로 넘깁니다.
Bne.Un.S 두 개의 부호 없는 정수 값이나 정렬 불가능한 부동 소수점 값이 같지 않으면 제어권을 대상 명령어로 넘깁니다(짧은). 체재).
Box 값 클래스를 객체 참조(O 유형)로 변환합니다.
Br 무조건 대상 명령어로 제어권을 넘깁니다.
Br.S 무조건 대상 명령어(약식)로 제어권을 넘겨줍니다.
Break 공용 언어 구문(CLI)에 신호를 보내 디버거에 중단점에 도달했음을 알립니다.
Brfalse 값이 false인 경우 null 참조(Visual Basic의 경우 Nothing) 또는 0이 제어를 대상 명령으로 전송합니다.
Brfalse.S 값이 false, null 참조 또는 0인 경우 제어를 대상 명령어로 전송합니다.
Brtrue 값이 true이거나 null이 아니거나 0이 아닌 경우 제어를 대상 명령어로 전송합니다.
Brtrue.S 값이 true이거나 null이 아니거나 0이 아닌 경우 제어를 대상 명령(약식)으로 전송합니다.
Call 은 전달된 메서드 지정자가 가리키는 메서드를 호출합니다.
Calli 호출 규칙에 설명된 매개변수를 사용하여 계산 스택에 표시된 메서드(진입점에 대한 포인터)를 호출합니다.
Callvirt 객체에 대해 런타임에 바인딩된 메서드를 호출하고 반환 값을 계산 스택에 푸시합니다.
Castclass 참조로 전달된 개체를 지정된 클래스로 캐스팅하려고 시도합니다.
Ceq 두 값을 비교합니다. 두 값이 동일하면 정수 값 1(int32)이 평가 스택에 푸시되고, 그렇지 않으면 0(int32)이 평가 스택에 푸시됩니다.
Cgt 두 값을 비교합니다. 첫 번째 값이 두 번째 값보다 크면 정수 값 1(int32)이 평가 스택에 푸시되고, 그렇지 않으면 0(int32)이 평가 스택에 푸시됩니다.
Cgt.Un 부호가 없거나 정렬할 수 없는 두 값을 비교합니다. 첫 번째 값이 두 번째 값보다 크면 정수 값 1(int32)이 평가 스택에 푸시되고, 그렇지 않으면 0(int32)이 평가 스택에 푸시됩니다.
Ckfinite 값이 유한수가 아닌 경우 ArithmeticException이 발생합니다.
Clt 두 값을 비교합니다. 첫 번째 값이 두 번째 값보다 작으면 정수 값 1(int32)이 평가 스택에 푸시되고, 그렇지 않으면 0(int32)이 평가 스택에 푸시됩니다.
Clt.Un 부호가 없거나 정렬할 수 없는 값 value1과 value2를 비교합니다. value1이 value2보다 작으면 정수 값 1(int32)이 평가 스택에 푸시되고, 그렇지 않으면 0(int32)이 평가 스택에 푸시됩니다.
제약됨 가상 메서드 호출이 이루어질 유형을 제한합니다.
Conv.I 계산 스택 상단의 값을 기본 int로 변환합니다.
Conv.I1 계산 스택 상단의 값을 int8로 변환한 다음 int32로 확장(채우기)합니다.
Conv.I2 계산 스택 상단의 값을 int16으로 변환한 다음 int32로 확장(채우기)합니다.
Conv.I4 계산 스택 상단의 값을 int32로 변환합니다.
Conv.I8 계산 스택 상단의 값을 int64로 변환합니다.
Conv.Ovf.I 평가 스택 상단의 서명된 값을 서명된 기본 int로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.I.Un 평가 스택 상단에 있는 부호 없는 값을 서명된 기본 int로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.I1 평가 스택 상단의 부호 있는 값을 부호 있는 int8로 변환하고 이를 int32로 확장하여 오버플로 시 OverflowException을 발생시킵니다. .
Conv.Ovf.I1.Un 평가 스택 상단의 부호 없는 값을 부호 있는 int8로 변환하고 int32로 확장하며 오버플로 시 OverflowException이 발생합니다.
Conv.Ovf.I2 평가 스택 상단의 부호 있는 값을 부호 있는 int16으로 변환하고 이를 int32로 확장하여 오버플로 시 OverflowException을 발생시킵니다. .
Conv.Ovf.I2.Un 평가 스택 상단의 부호 없는 값을 부호 있는 int16으로 변환하고 int32로 확장한 후 오버플로 시 OverflowException이 발생합니다.
Conv.Ovf.I4 평가 스택 상단의 부호 있는 값을 부호 있는 int32로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.I4.Un 평가 스택 상단의 부호 없는 값을 부호 있는 int32로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.I8 평가 스택 상단의 부호 있는 값을 부호 있는 int64로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.I8.Un 평가 스택 상단에 있는 부호 없는 값을 부호 있는 int64로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.U 평가 스택 상단의 부호 있는 값을 부호 없는 기본 int로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.U.Un 평가 스택 상단의 부호 없는 값을 부호 없는 기본 int로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.U1 평가 스택 상단의 부호 있는 값을 unsigned int8로 변환하고 int32로 확장하여 오버플로 시 OverflowException을 발생시킵니다. .
Conv.Ovf.U1.Un 평가 스택 상단의 부호 없는 값을 unsigned int8로 변환하고 int32로 확장하여 오버플로 OverflowException을 발생시킵니다.
Conv.Ovf.U2 평가 스택 상단의 부호 있는 값을 unsigned int16으로 변환하고 int32로 확장하여 오버플로 시 OverflowException을 발생시킵니다. .
Conv.Ovf.U2.Un 평가 스택 상단의 부호 없는 값을 unsigned int16으로 변환하고 int32로 확장하여 오버플로가 발생합니다. 오버플로 예외.
Conv.Ovf.U4 평가 스택 상단의 부호 있는 값을 부호 없는 int32로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.U4.Un 평가 스택 상단의 부호 없는 값을 부호 없는 int32로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.U8 평가 스택 상단의 부호 있는 값을 unsigned int64로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.Ovf.U8.Un 평가 스택 상단의 부호 없는 값을 unsigned int64로 변환하고 오버플로 시 OverflowException을 발생시킵니다.
Conv.R.Un 평가 스택 상단에 있는 부호 없는 정수 값을 float32로 변환합니다.
Conv.R4 계산 스택 상단의 값을 float32로 변환합니다.
Conv.R8 계산 스택 상단의 값을 float64로 변환합니다.
Conv.U 계산 스택 상단의 값을 부호 없는 기본 int로 변환한 다음 기본 int로 확장합니다.
Conv.U1 계산 스택 상단의 값을 unsigned int8로 변환한 다음 int32로 확장합니다.
Conv.U2 계산 스택 상단의 값을 unsigned int16으로 변환한 다음 int32로 확장합니다.
Conv.U4 계산 스택 상단의 값을 unsigned int32로 변환한 다음 int32로 확장합니다.
Conv.U8 계산 스택 상단의 값을 unsigned int64로 변환한 다음 int64로 확장합니다.
Cpblk 원본 주소에서 대상 주소로 지정된 바이트 수를 복사합니다.
Cpobj 객체의 주소(&, * 또는 기본 int 유형)에 있는 값 유형을 대상 객체의 주소(&, * 또는 기본 int 유형) .
p 두 값을 나누고 결과를 float(F 유형) 또는 몫(int32 유형)으로 평가 스택에 푸시합니다.
p.Un 두 개의 부호 없는 정수 값을 나누고 결과( int32 )를 평가 스택에 푸시합니다.
Dup 계산 스택의 현재 최상위 값을 복사한 다음 복사본을 계산 스택에 푸시합니다.
Endfilter 예외 필터 절의 제어를 다시 CLI(공용 언어 구성) 예외 처리기로 전환합니다.
Endfinally 예외 블록의 결함 또는 finally 절에서 다시 공용 언어 구성(CLI) 예외 처리기로 제어를 전환합니다.
Initblk 특정 주소에 있는 특정 메모리 블록을 주어진 크기와 초기값으로 초기화합니다.
Initobj 지정된 주소에 있는 값 유형의 각 필드를 Null 참조 또는 적절한 기본 유형의 경우 0으로 초기화합니다.
Isinst 객체 참조(O 유형)가 특정 클래스의 인스턴스인지 테스트합니다.
Jmp 현재 메소드를 종료하고 지정된 메소드로 점프합니다.
Ldarg 인수(지정된 인덱스 값으로 참조됨)를 스택에 로드합니다.
Ldarg.0 인덱스가 0인 매개변수를 평가 스택에 로드합니다.
Ldarg.1 인덱스 1이 있는 매개변수를 평가 스택에 로드합니다.
Ldarg.2 인덱스 2가 있는 인수를 평가 스택에 로드합니다.
Ldarg.3 인덱스 3이 있는 매개변수를 평가 스택에 로드합니다.
Ldarg.S 인수(지정된 약식 인덱스에서 참조됨)를 평가 스택에 로드합니다.
Ldarga 계산 스택에 매개변수 주소를 로드합니다.
Ldarga.S 계산 스택에 짧은 형식의 매개변수 주소를 로드합니다.
Ldc.I4 int32 유형의 제공된 값을 평가 스택에 int32로 푸시합니다.
Ldc.I4.0 정수 값 0을 int32로 계산 스택에 푸시합니다.
Ldc.I4.1 정수 값 1을 int32로 평가 스택에 푸시합니다.
Ldc.I4.2 정수 값 2를 int32로 평가 스택에 푸시합니다.
Ldc.I4.3 정수 값 3을 평가 스택에 int32로 푸시합니다.
Ldc.I4.4 정수 값 4를 int32로 계산 스택에 푸시합니다.
Ldc.I4.5 정수 값 5를 int32로 계산 스택에 푸시합니다.
Ldc.I4.6 정수 값 6을 int32로 계산 스택에 푸시합니다.
Ldc.I4.7 정수 값 7을 int32로 계산 스택에 푸시합니다.
Ldc.I4.8 정수 값 8을 int32로 계산 스택에 푸시합니다.
Ldc.I4.M1 정수 값 -1을 int32로 계산 스택에 푸시합니다.
Ldc.I4.S 제공된 int8 값을 int32(약식)로 계산 스택에 푸시합니다.
Ldc.I8 int64 유형의 제공된 값을 평가 스택에 int64로 푸시합니다.
Ldc.R4 float32 유형의 제공된 값을 F(float) 유형으로 평가 스택에 푸시합니다.
Ldc.R8 float64 유형의 제공된 값을 F(float) 유형으로 평가 스택에 푸시합니다.
Ldelem 지시문에 지정된 유형에 따라 지정된 배열 인덱스의 요소를 평가 스택 맨 위에 로드합니다.
Ldelem.I 지정된 배열 인덱스의 기본 int 유형 요소를 평가 스택 상단의 기본 int로 로드합니다.
Ldelem.I1 지정된 배열 인덱스에 있는 int8 유형의 요소를 평가 스택 상단에 int32로 로드합니다.
Ldelem.I2 지정된 배열 인덱스에 있는 int16 유형의 요소를 평가 스택 상단에 int32로 로드합니다.
Ldelem.I4 지정된 배열 인덱스의 int32 유형 요소를 평가 스택 상단에 int32로 로드합니다.
Ldelem.I8 지정된 배열 인덱스의 int64 유형 요소를 평가 스택 상단에 int64로 로드합니다.
Ldelem.R4 지정된 배열 인덱스에 있는 float32 유형의 요소를 평가 스택 맨 위에 유형 F(float)로 로드합니다.
Ldelem.R8 지정된 배열 인덱스에 있는 float64 유형의 요소를 평가 스택 맨 위에 유형 F(float)로 로드합니다.
Ldelem.Ref 지정된 배열 인덱스의 개체 참조를 포함하는 요소를 평가 스택 상단에 O 유형(개체 참조)으로 로드합니다.
Ldelem.U1 지정된 배열 인덱스에 있는 unsigned int8 유형의 요소를 평가 스택 상단에 int32로 로드합니다.
Ldelem.U2 지정된 배열 인덱스에 있는 unsigned int16 유형의 요소를 평가 스택 상단에 int32로 로드합니다.
Ldelem.U4 지정된 배열 인덱스에 있는 unsigned int32 유형의 요소를 평가 스택 상단에 int32로 로드합니다.
Ldelema 지정된 배열 인덱스에 있는 배열 요소의 주소를 & 유형(관리 포인터)으로 평가 스택 상단에 로드합니다.
Ldfld 현재 계산 스택에 참조가 있는 개체의 필드 값을 찾습니다.
Ldflda 참조가 현재 계산 스택에 있는 개체의 필드 주소를 찾습니다.
Ldftn 특정 메소드를 구현하는 네이티브 코드에 관리되지 않는 포인터(네이티브 int 유형)를 평가 스택에 푸시합니다.
Ldind.I native int 유형의 값을 네이티브 int로 간접적으로 계산 스택에 로드합니다.
Ldind.I1 int8 유형의 값을 평가 스택에 int32로 간접적으로 로드합니다.
Ldind.I2 int16 유형의 값을 평가 스택에 int32로 간접적으로 로드합니다.
Ldind.I4 int32 간접 참조로 int32 유형의 값을 평가 스택에 로드합니다.
Ldind.I8 int64 간접 참조로 int64 유형의 값을 평가 스택에 로드합니다.
Ldind.R4 float32 값을 F(float) 유형으로 계산 스택에 간접적으로 로드합니다.
Ldind.R8 float64 값을 F(float) 유형으로 계산 스택에 간접적으로 로드합니다.
Ldind.Ref 객체 참조를 O(객체 참조) 유형으로 평가 스택에 간접적으로 로드합니다.
Ldind.U1 unsigned int8 유형의 값을 int32로 평가 스택에 간접적으로 로드합니다.
Ldind.U2 unsigned int16 유형의 값을 평가 스택에 int32로 간접적으로 로드합니다.
Ldind.U4 unsigned int32 유형의 값을 int32로 간접적으로 평가 스택에 로드합니다.
Ldlen 0부터 시작하는 1차원 배열의 요소 수를 평가 스택에 푸시합니다.
Ldloc 지정된 인덱스의 지역 변수를 평가 스택에 로드합니다.
Ldloc.0 인덱스 0의 지역 변수를 평가 스택에 로드합니다.
Ldloc.1 인덱스 1의 지역 변수를 평가 스택에 로드합니다.
Ldloc.2 인덱스 2의 지역 변수를 평가 스택에 로드합니다.
Ldloc.3 인덱스 3의 지역 변수를 평가 스택에 로드합니다.
Ldloc.S 특정 인덱스의 지역 변수를 평가 스택(약식)에 로드합니다.
Ldloca 특정 인덱스에 위치한 지역 변수의 주소를 평가 스택에 로드합니다.
Ldloca.S 특정 인덱스에 위치한 지역 변수의 주소를 평가 스택(약식)에 로드합니다.
Ldnull Null 참조(O 유형)를 평가 스택에 푸시합니다.
Ldobj 주소가 가리키는 값 형식 개체를 평가 스택의 최상위에 복사합니다.
Ldsfld 정적 필드의 값을 계산 스택으로 푸시합니다.
Ldsflda 정적 필드의 주소를 계산 스택에 푸시합니다.
Ldstr 메타데이터에 저장된 문자열에 새 개체 참조를 푸시합니다.
Ldtoken 메타데이터 토큰을 런타임 표현으로 변환하고 컴퓨팅 스택에 푸시합니다.
Ldvirtftn 지정된 개체와 연결된 특정 가상 메서드를 구현하는 네이티브 코드에 대한 관리되지 않는 포인터(네이티브 int 유형)를 평가 스택에 푸시합니다.
Leave 보호된 코드 영역을 종료하고 무조건 특정 대상 명령어로 제어권을 넘깁니다.
Leave.S 보호된 코드 영역을 종료하고 무조건 대상 명령어(축약형)로 제어권을 넘깁니다.
Localloc 로컬 동적 메모리 풀에서 특정 수의 바이트를 할당하고 첫 번째 할당된 바이트의 주소(일시 포인터, * 유형)를 계산에 푸시합니다. 스택.
Mkrefany 특정 유형의 인스턴스에 대한 유형화된 참조를 평가 스택에 푸시합니다.
Mul 두 값을 곱하고 그 결과를 계산 스택에 푸시합니다.
Mul.Ovf 두 정수 값을 곱하고 오버플로 검사를 수행한 후 결과를 계산 스택에 푸시합니다.
Mul.Ovf.Un 두 개의 부호 없는 정수 값을 곱하고 오버플로 검사를 수행한 후 결과를 평가 스택에 푸시합니다.
Neg 값의 부정을 수행하고 결과를 계산 스택에 푸시합니다.
Newarr 요소가 특정 유형인 새로운 0 기반 1차원 배열에 대한 객체 참조를 평가 스택에 푸시합니다.
Newobj 새 개체 또는 값 유형의 인스턴스를 만들고 개체 참조(O 유형)를 계산 스택에 푸시합니다.
아니요 opcode가 패치된 경우 공간을 Paps합니다. 처리주기가 소비될 수 있지만 의미 있는 작업이 수행되지 않습니다.
Not 스택 상단에 있는 정수 값의 비트 보수를 계산하고 결과를 동일한 유형으로 평가 스택에 푸시합니다.
Or 스택 상단에 있는 두 정수 값의 비트 보수를 계산하고 결과를 평가 스택에 푸시합니다.
Pop 현재 계산 스택의 맨 위에 있는 값을 제거합니다.
접두사 1 인프라. 이 명령은 예약되어 있습니다.
접두사2 인프라. 이 명령은 예약되어 있습니다.
접두사3 인프라. 이 명령은 예약되어 있습니다.
접두사4 인프라. 이 명령은 예약되어 있습니다.
접두사 5 인프라. 이 명령은 예약되어 있습니다.
접두사6 인프라. 이 명령은 예약되어 있습니다.
접두사7 인프라. 이 명령은 예약되어 있습니다.
접두사 참조 인프라. 이 명령은 예약되어 있습니다.
읽기 전용 후속 배열 주소 작업이 런타임 시 유형 검사를 수행하지 않고 변경 가능성이 제한된 관리형 포인터를 반환하도록 지정합니다.
Refanytype 형식화된 참조 내에 포함된 유형 태그를 검색합니다.
Refanyval 입력된 참조에 포함된 주소(& 유형)를 검색합니다.
Rem 두 값을 나누고 나머지를 계산 스택에 푸시합니다.
Rem.Un 부호 없는 두 값을 나누고 나머지를 평가 스택에 푸시합니다.
Ret 현재 메서드에서 반환하고 반환 값(있는 경우)을 호출자의 계산 스택에서 호출 수신자의 계산 스택으로 푸시합니다.
Rethrow 현재 예외를 다시 발생시킵니다.
Shl 정수 값을 지정된 자릿수만큼 왼쪽(0으로 채워짐)으로 이동하고 결과를 평가 스택에 푸시합니다.
Shr 정수 값을 지정된 자릿수만큼 오른쪽으로 이동(부호 보존)하고 결과를 평가 스택에 푸시합니다.
Shr.Un 부호 없는 정수 값을 지정된 자릿수만큼 오른쪽(0으로 채워짐)으로 이동하고 결과를 평가 스택에 푸시합니다.
Sizeof 제공된 값 유형의 크기(바이트)를 계산 스택에 푸시합니다.
Starg 평가 스택 상단의 값을 지정된 인덱스의 인수 슬롯에 저장합니다.
Starg.S 인수 슬롯(약식)의 지정된 인덱스에 있는 평가 스택 상단의 값을 저장합니다.
Stelem 주어진 인덱스의 배열 요소를 지시문에 유형이 지정된 계산 스택의 값으로 바꿉니다.
Stelem.I 주어진 인덱스의 배열 요소를 계산 스택의 기본 int 값으로 바꿉니다.
Stelem.I1 주어진 인덱스의 배열 요소를 계산 스택의 int8 값으로 바꿉니다.
Stelem.I2 주어진 인덱스의 배열 요소를 계산 스택의 int16 값으로 바꿉니다.
Stelem.I4 주어진 인덱스의 배열 요소를 계산 스택의 int32 값으로 바꿉니다.
Stelem.I8 주어진 인덱스의 배열 요소를 계산 스택의 int64 값으로 바꿉니다.
Stelem.R4 주어진 인덱스의 배열 요소를 계산 스택의 float32 값으로 바꿉니다.
Stelem.R8 주어진 인덱스의 배열 요소를 계산 스택의 float64 값으로 바꿉니다.
Stelem.Ref 주어진 인덱스의 배열 요소를 계산 스택의 개체 참조 값(O 유형)으로 바꿉니다.
Stfld 객체 참조 또는 포인터의 필드에 저장된 값을 새 값으로 바꿉니다.
Stind.I 제공된 주소에 기본 int 유형의 값을 저장합니다.
Stind.I1 제공된 주소에 int8 유형의 값을 저장합니다.
Stind.I2 제공된 주소에 int16 유형의 값을 저장합니다.
Stind.I4 제공된 주소에 int32 유형의 값을 저장합니다.
Stind.I8 제공된 주소에 int64 값을 저장합니다.
Stind.R4 제공된 주소에 float32 값을 저장합니다.
Stind.R8 제공된 주소에 float64 값을 저장합니다.
Stind.Ref 는 제공된 주소에 객체 참조 값을 저장합니다.
Stloc 평가 스택 상단에서 현재 값을 팝하고 이를 지정된 인덱스의 지역 변수 목록에 저장합니다.
Stloc.0 평가 스택 상단에서 현재 값을 팝하여 지역 변수 목록의 인덱스 0에 저장합니다.
Stloc.1 평가 스택 상단에서 현재 값을 팝하여 인덱스 1의 지역 변수 목록에 저장합니다.
Stloc.2 평가 스택 상단에서 현재 값을 팝하여 인덱스 2의 지역 변수 목록에 저장합니다.
Stloc.3 평가 스택 상단에서 현재 값을 팝하여 인덱스 3의 지역 변수 목록에 저장합니다.
Stloc.S 계산 스택 상단에서 현재 값을 팝하고 이를 지역 변수 목록(약식)의 인덱스에 저장합니다.
Stobj 평가 스택에서 지정된 유형의 값을 제공된 메모리 주소로 복사합니다.
Stsfld 정적 필드의 값을 계산 스택의 값으로 바꿉니다.
Sub 다른 값에서 값을 빼고 그 결과를 계산 스택에 푸시합니다.
Sub.Ovf 다른 값에서 정수 값을 빼고 오버플로 검사를 수행한 후 결과를 평가 스택에 푸시합니다.
Sub.Ovf.Un 다른 값에서 부호 없는 정수 값을 빼고 오버플로 검사를 수행한 후 결과를 평가 스택에 푸시합니다.
Switch 는 점프 테이블을 구현합니다.
Tailcall 실제 호출 명령을 실행하기 전에 접미사가 붙은 메서드 호출 명령을 실행하여 현재 메서드의 스택 프레임을 제거합니다.
Throw 현재 평가 스택에 있는 예외 개체를 throw합니다.
정렬되지 않음 현재 평가 스택에 있는 주소가 바로 다음에 오는 ldind, stind, ldfld, stfld, ldobj, stobj, initblk, 또는 cpblk 명령 자연 크기 정렬.
Unbox 값 유형의 boxed 표현을 unboxed 형식으로 변환합니다.
Unbox.Any 지시문에 지정된 유형의 박스형 표현을 unboxed 형식으로 변환합니다.
휘발성 현재 계산 스택의 상단에 있는 주소가 휘발성일 수 있고 해당 위치를 읽은 결과를 캐시할 수 없거나 여러 번 휘발성이 있음을 지정합니다. 저장 영역은 취소할 수 없습니다.
Xor 평가 스택 상단에 있는 두 값의 비트별 XOR을 계산하고 결과를 평가 스택에 푸시합니다.

요약

이 글에서는 IL 명령어를 자세히 설명하지 않고 요약만 제공합니다. 옛말에 물을 한 모금씩 마셔야 하고, 길을 한걸음 한걸음씩 걸어야 한다는 말이 있습니다. 조금 짧습니다. 다음 장이 있을 것입니다. 다음 기사에서는 IL의 몇 가지 기본 지침에 대해 계속해서 작성하겠습니다. 나는 내 자신의 이해를 결합하고 모든 사람이 쉽게 이해할 수 있도록 가능한 한 명확하게 텍스트를 작성하려고 노력할 것입니다.

위 내용은 .NET Framework Intermediate Language IL Instructions 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.