2012-03-03 1 views
2

A .NET/CLR- 질문 : 모든 개체의 두 번째 필드에는 메서드 테이블에 대한 포인터가 있습니다. 이 메소드 테이블의 정확한 (정확한!) 레이아웃은 CLR 4.0 (x86 아키텍처)의 버전 4.0에서 어떻게됩니까? 이 정보를 찾을 수있는 힌트와 도메인 전체 인터페이스 테이블의 레이아웃과 관련된 정보를 얻을 수 있다면 좋을 것입니다.CLR (버전 4.0)의 메서드 테이블의 정확한 레이아웃

+2

왜 이것을 알아야합니까? 왜 정확해야합니까? – svick

+0

COM은 이러한 유형의 정보를 설명하는 데 큰 도움이되지만 CLR이 무엇인지 잘 모르겠습니다. 이 정보를 어떻게 사용하고 싶으십니까? 우리에게 당신을위한 좋은 해결책을 제시하는 데 도움이 될 수 있습니다. – JaredPar

+0

이 질문, 답변 및 포함 된 링크를 확인하십시오. .NET 4.0에서는 반드시 최신이 아니지만 좋은 출발점입니다. http://stackoverflow.com/questions/5385653/object-layout-structure-in-net-using-disassembler –

답변

0

“Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects” 문서는 .Net의 메서드를 설명하는 데 매우 자세히 설명되어 있습니다.

그것은 2005 년 5 월에 나온 것이므로 .Net 4에만 국한된 것은 아니지만 그 이후로 큰 변화가 없었는지는 의심 스럽습니다.

+0

.NET 4에서 아무 변화가 없다고 가정 할 이유는 거의 없으며 SSCLI20 버전에서는 MethodTable 클래스 * 선언 *이 2599 행에 불과하며 나머지 CLR 배관과 많이 얽혀 있습니다. clr/src/vm/methodtable.h 소스 파일. 대답에서 정확한 레이아웃을 기대하는 것은 테이블에서 벗어난 것입니다. –

+0

나는이 기사와 비슷한 기사를 알고 있으며 나는 그 기사를 좋아한다. 그러나 그들은 구식입니다. (원칙은 변경되지 않았지만 세부 사항은 있습니다.) VS2020 및 SOS를 사용하여 C#의 관점에서 이해 한 인터페이스 메소드 디스 패칭의 구현을 추적하고 싶습니다. 순수한 호기심! – Cord

+0

@Cord와 낡은 기사에 따라 그렇게 해 보았습니까? 어쩌면 관심있는 부분이 변경되지 않았을 수 있습니다. 문제가 발생하면 새로운 특정 질문을하는 것이 도움이 될 수 있습니다. – svick

관련 문제