BCL의 많은 메서드는 [MethodImpl(MethodImplOptions.InternalCall)]
특성으로 표시되어 있습니다. "indicates"메서드는 공용 언어 런타임 자체 내에서 구현됩니다.MethodImplOptions.InternalCall의 요점은 무엇입니까?
런타임에서 구현해야하는 명시 적 명시된 CIL 명령어를 통해 이러한 방식으로 프레임 워크를 설계하는 요점은 무엇입니까? 궁극적으로, 속성은 런타임에 대한 계약 상 의무를 만들고 있지만 혼란스럽고 즉시 명백하지 않은 것처럼 보입니다.
public static double Pow(double x, double y)
{
ldarg.0
ldarg.1
pow // Dedicated CIL instruction
ret
}
:;
는 예를 들어, Math.Pow
이 방법 (나의 점을 설명하기 위해이 만 샘플 C 번호 + IL과 IL 자체가 나쁜 경우는 내 비공식 혼합물 변명을) 기록 된 수 현재 방법 대신 :
[MethodImpl(MethodImplOptions.InternalCall)]
public static double Pow(double x, double y);
왜 MethodImplOptions.InternalCall
가 존재합니까?
작동하지 않는 것 같지 않습니다. 단지 끔찍한 스케일입니다. 스택 트랜잭션은 일리노이 op 코드에 대해 암시 적이기 때문에 함수 시그니처를 처리하기 위해 많은 툴링을 업데이트해야합니다. 선언문이 메타 데이터에있을 때 무료입니다. Ecma-335 표준 외에도 쉽게 확장 할 수 있습니다. –
@Hans : 새로운 일리노이 지침에 대한 지원 추가에 대한 질문이 있었습니까? 나는 Ani가 왜 'InternalCall' 방법이 처음에 존재했는지 알고 싶어한다는 것을 이해했습니다. 그냥 물어 보면 ... –
@thecoon -'// 전용 CIL 명령'은 좋은 힌트입니다. –