이 IL 코드는 내가 더 많이 본 것을 코드화하므로, 올바르게 해석하는 법을 배우기를 좋아합니다.CLR에서 IL을 배우는 방법
나는 C# 컴파일러 또는 그래서 나는이 일반적인 것들 배우고 후에 내가 꽤 많이 알아서 할 수 있다고 생각 다른 같은 문서를 찾을 수 없습니다:
아래내가 필요로하는 것을 포함하는 몇 가지 예제 IL 코드입니다을 알고 :
샘플 1 :
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 15 (0xf)
.maxstack 1
.locals init ([0] class EnumReflection.DerivedClass derivedClass)
IL_0000: nop
IL_0001: newobj instance void EnumReflection.DerivedClass::.ctor()
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: callvirt instance void EnumReflection.DerivedClass::WriteOutput()
IL_000d: nop
IL_000e: ret
} // end of method Program::Main
샘플 2 :
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 38 (0x26)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldstr "Hello"
IL_0006: stfld string EnumReflection.DerivedClass::hello
IL_000b: ldarg.0
IL_000c: ldstr "World"
IL_0011: stfld string EnumReflection.DerivedClass::world
IL_0016: ldarg.0
IL_0017: ldc.i4.s 123
IL_0019: stfld int32 EnumReflection.DerivedClass::age
IL_001e: ldarg.0
IL_001f: call instance void EnumReflection.BaseClass::.ctor()
IL_0024: nop
IL_0025: ret
} // end of method DerivedClass::.ctor
나는이 코드들이 내가 제작 한 이후에 무엇을하는지 알고있다. 그러나 나는 대응하는 일리노이 코드에 대해 더 알고 싶다.
이러한 샘플에는 과 같은 IL 코드가 포함되어 있으며 물음표로 명령을 설명해주십시오. 그리고 그 명령은 무엇을 의미합니까? 그래서 우리는 쉽게 암기 할 수 있습니다.
- NOP (디버깅 - 어떤 동작을)
- NEWOBJ
- stloc.0 (힙에서 새로운 개체를 만드는 것)?
- ldloc.0?
- ret?
- ldarg.0?
- ldstr?
- stfld?
- ldc.i4.s?
- .ctor -이 컴파일러는 특정 경우에 코드와 행동을 생산하는 방법을 특정 노출로 생성자
IL 이해가 중요하다.
그러나 일리노이에 대한 예제가 포함 된 멋진 문서를 찾을 수 없습니다. C# 3.0이있는 CLR은 좋은 책이지만 결국 IL 책이 아니기 때문에 IL에 대한 모든 것을 설명하지는 못합니다.
편집 :
내가 사양을 발견 한 그들은이 말씀 : 덕분에 @usr 할 수 있습니다.
- NOP (디버깅 -없는 오퍼레이션)
- NEWOBJ -
- ldloc.0 로컬 변수 스택에서 팝 값 - 새로운 객체
- stloc.0를 작성? - 로컬 변수를 스택에로드하십시오.
- 메소드에서 복귀 -
- ldarg.0 - 스택에 인수 0을로드하십시오.
- ldstr는 - 리터럴 스트링을
- stfld로드 - 스토어 오브젝트
- ldc.i4.s의 필드 - 푸시 NUM INT32 짧은 형태로 스택에.
- .ctor - 생성자
를 가까운 유권자에 :.. 나는이 제목을 변경 내 질문에 ... – Tarik
편집 I를. 이것이 완전히 유효한 질문이라고 생각하십시오. – usr
@usr : 제목을 바꾸셔서 고맙습니다. 다시 좋아 보인다. – Tarik