집 >백엔드 개발 >C#.Net 튜토리얼 >.NET Framework 중간 언어 IL 지침 컬렉션
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)를 참고해주세요!