2009-10-28 2 views

답변

10

MethodImplOptions.InternalCall은이 메서드가 공용 언어 런타임에서 기본적으로 구현됨을 의미합니다. 타겟 플랫폼에 일반적으로 많이 최적화되어 있기 때문에 수학 연산에는 의미가 있습니다. 예를 들어 x86 아키텍처에는 사인과 코사인을 계산하는 단일 명령어가 있습니다. 관리 형 구현에서는 이러한 지시를 직접 활용할 수 없습니다.

+0

감사합니다 Mehrdad, 기본적으로 C++ 또는 NGEN'ed C# 또는 다른 것을 의미합니까? –

+1

@ 조안 : 아니요, NGENed는 아닙니다. 이러한 메소드가 호출되면 CLR은 자체 구현 (대부분 C++ 또는 어셈블리)을 사용합니다. 메서드 구현은 CLR 코드의 일부입니다. –

+0

어쩌면 조금 관련이없는 나는 2 개의 질문이있다. 1. 죄와 같은 그러한 방법은 매우 다양한 플랫폼을 위해 별도로 작성 되었습니까? 그리고 컴파일러와 CLR은 실제로 컴파일 타임과 런타임에 내부 호출이 있는지 확인합니다. 이것이 일리노이에서 보일까요 아니면 모두 후드 마술 아래 있습니까? –

4

구현이 최적화 된 기본 코드이기 때문에 가능합니다.

3

구현은 기본으로 수행됩니다. 이것은 죄악을 위해서만 쓰이는 것이 아니라 공통 문자열 작업을 살펴 ​​보는 것입니다.

CLR은 이러한 메서드를 인식하고 "호출 테이블"을 유지 관리합니다. Math.Sin에서 호출을 보게되면 호출 테이블에 "조회"를 수행하여 네이티브 구현으로 리디렉션합니다. 더 자세한 정보를 찾으려면 로터 소스에서 ecall.cpp를 검색하거나 직접 here (Google 코드 검색)으로 이동하십시오.

관련 문제