C# 컴파일러는 C# 프로그래밍 코드를 기계가 읽을 수 있는 언어 코드로 변환하는 데 사용되는 내장 구성 요소로 정의할 수 있습니다. 이 언어 코드는 출력 파일을 .dll 파일 또는 .exe 파일 형식으로 반환합니다. C#에는 CLR(공용 언어 런타임 컴파일)과 JIT(Just in time 컴파일)라는 두 가지 유형의 컴파일 방법이 있습니다. JIT 컴파일러는 Pre JIT 컴파일러, Normal JIT 컴파일러 및 Econo JIT 컴파일러로 더 분류됩니다. 이 컴파일 목적으로 일반적으로 사용되는 도구로는 C# 컴파일러 2.0, C# 컴파일러 3.5, C# 컴파일러 4.x, Roslyn 및 Mono 컴파일러가 있습니다.
따라서 중간 언어가 생성된 후 프로세서는 기계어 코드만 이해하므로 이 IL을 기계어 코드로 변환해야 했습니다. 그래서 우리는 이 변환에 CLR(Common Language Runtime)을 사용했습니다. CLR은 컴퓨터에서 실행되고 Just-In-Time(일반적으로 JIT라고 함)의 도움으로 IL 코드를 기계어 코드로 변경하는 프로그램입니다. .exe 파일을 두 번 클릭하면 JIT 컴파일러가 호출되어 해당 시간에 IL 코드를 컴파일하므로 JUST-IN-TIME(JIT)이라는 이름이 붙었습니다.
컴파일은 암시적 또는 명시적으로 수행될 수 있습니다. 암시적 컴파일은 2번의 컴파일로, 먼저 IS로 컴파일하고 그 다음 기계어로 컴파일합니다. 이 프로세스를 JIT 컴파일 또는 JUST-In-Time 컴파일이라고 합니다. JIT는 다양한 플랫폼을 지원하고 코드 실행 속도를 높입니다.
Just-In-Time 컴파일러에는 세 가지가 있습니다
1. 사전 JIT 컴파일러
본 컴파일러에서는 소스코드 전체가 네이티브 코드로 컴파일되기 때문에 컴파일 과정은 단 한 번뿐입니다.
2. 일반 JIT 컴파일러
이 컴파일러에서는 해당 메소드만 런타임에 필요한 기계어 코드로 컴파일됩니다. 컴파일러는 해당 메소드를 컴파일하고 캐시에 저장한 후 동일한 메소드를 다시 사용합니다.
3. Econo JIT 컴파일러
이 컴파일러에서는 해당 메소드만 런타임에 필요한 기계어 코드로 컴파일되지만 필요하지 않은 경우 이러한 메소드는 제거됩니다. JIT에서는 필요한 메소드만 런타임에 컴파일되므로 메모리 사용량이 적습니다.
위 도표에서
컴파일 시 1~3단계가 실행됩니다
런타임에 3~5단계가 실행됩니다.
그래서 실행하면 이 두 가지 오류가 발생합니다.
초기 Microsoft 컴파일러는 C# 컴파일러 2.0, C# 컴파일러 3.5, C# 컴파일러 4.x 등과 같이 .Net Framework로 명명되었습니다. 이러한 컴파일러는 C#으로 작성되지 않았거나 C#이 C#으로 컴파일되지 않았다고 말할 수 있습니다. 이후에 등장한 다른 컴파일러는 다음과 같습니다.
이전에는 컴파일러가 C/C++로 작성되었습니다. Roslyn은 C++ 코드가 대체된 오픈 소스 .Net 컴파일러입니다. 코드의 요소 유형과 서로의 관계를 가져옵니다. 따라서 C# 및 VB 팀이 컴파일러를 작성했기 때문에 두 가지 모두에 Visual Studio 템플릿을 사용할 수 있습니다. 이를 통해 소스 파일을 구문 분석하는 코드를 작성할 수 있으며 소스 코드를 쉽게 수정할 수 있습니다.
다음은 Roslyn의 4가지 API 레이어입니다
C#용 ECMA 표준을 기반으로 하는 모노 C# 컴파일러입니다. C# 1.0, 2.0, 3.0, 4.0과 같은 프레임워크를 갖춘 여러 버전이 있습니다. 모노 컴파일러 mcs는 프레임워크 1.1을 대상으로 하고, gmcs는 프레임워크 2.0을 대상으로 하며, smcs와 dmcs는 각각 프레임워크 2.1과 4.0을 대상으로 합니다.
EMCA 사양에 따라 C# 표준을 따르는 RemObjects C# 컴파일러와 같은 다른 컴파일러와 C# 및 .Net을 구현하는 GNU C# 컴파일러가 있습니다.
C# 컴파일러는 프로세서가 프로세스를 이해할 수 있도록 코드를 기계어 코드로 컴파일하는 다른 컴파일러와 같습니다.
위 내용은 C# 컴파일러의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!