C# 컴파일러

王林
풀어 주다: 2024-09-03 15:03:03
원래의
1343명이 탐색했습니다.

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 컴파일러가 있습니다.

C# 컴파일러

따라서 중간 언어가 생성된 후 프로세서는 기계어 코드만 이해하므로 이 IL을 기계어 코드로 변환해야 했습니다.  그래서 우리는 이 변환에 CLR(Common Language Runtime)을 사용했습니다. CLR은 컴퓨터에서 실행되고 Just-In-Time(일반적으로 JIT라고 함)의 도움으로 IL 코드를 기계어 코드로 변경하는 프로그램입니다. .exe 파일을 두 번 클릭하면 JIT 컴파일러가 호출되어 해당 시간에 IL 코드를 컴파일하므로 JUST-IN-TIME(JIT)이라는 이름이 붙었습니다.

C# 컴파일러

컴파일은 암시적 또는 명시적으로 수행될 수 있습니다. 암시적 컴파일은 2번의 컴파일로, 먼저 IS로 컴파일하고 그 다음 기계어로 컴파일합니다. 이 프로세스를 JIT 컴파일 또는 JUST-In-Time 컴파일이라고 합니다. JIT는 다양한 플랫폼을 지원하고 코드 실행 속도를 높입니다.

Just-In-Time 컴파일러의 종류

Just-In-Time 컴파일러에는 세 가지가 있습니다

1. 사전 JIT 컴파일러

본 컴파일러에서는 소스코드 전체가 네이티브 코드로 컴파일되기 때문에 컴파일 과정은 단 한 번뿐입니다.

2. 일반 JIT 컴파일러

이 컴파일러에서는 해당 메소드만 런타임에 필요한 기계어 코드로 컴파일됩니다. 컴파일러는 해당 메소드를 컴파일하고 캐시에 저장한 후 동일한 메소드를 다시 사용합니다.

3. Econo JIT 컴파일러

이 컴파일러에서는 해당 메소드만 런타임에 필요한 기계어 코드로 컴파일되지만 필요하지 않은 경우 이러한 메소드는 제거됩니다. JIT에서는 필요한 메소드만 런타임에 컴파일되므로 메모리 사용량이 적습니다.

위 도표에서

컴파일 시 1~3단계가 실행됩니다

런타임에 3~5단계가 실행됩니다.

그래서 실행하면 이 두 가지 오류가 발생합니다.

런타임 오류 및 컴파일러 오류

  • 컴파일러 오류: 이 유형의 오류는 C# 컴파일러 자체에서 발생합니다. 이는 C# 코드가 .exe 형식으로 컴파일되는 것을 방지합니다. 이러한 오류는 기본적으로 구문 오류로 인해 발생합니다. 구문을 잘못 입력하거나 쉼표나 세미콜론을 놓친 경우 컴파일러는 이를 이해하지 못하여 처리를 중지하고 컴파일 시간 오류를 발생시킵니다. IDE의 출력 창에서 이러한 오류를 볼 수 있습니다. 따라서 이러한 오류를 검사하여 코드를 수정할 수 있습니다.
  • 런타임 오류: 실시간 오류입니다. 이는 코드가 성공적으로 컴파일되었지만 실행 중에 문제가 발생할 때 발생합니다. 이는 코드 동작에 영향을 미칩니다. 예를 들어, 숫자를 0으로 나누려고 하면 런타임 오류가 발생한다고 말할 수 있습니다. 이러한 오류는 컴파일러 오류보다 더 지루합니다. 이 경우 코드 동작을 수정해야 하기 때문입니다.

C# 컴파일러

C# 컴파일러 유형

초기 Microsoft 컴파일러는 C# 컴파일러 2.0, C# 컴파일러 3.5, C# 컴파일러 4.x 등과 같이 .Net Framework로 명명되었습니다. 이러한 컴파일러는 C#으로 작성되지 않았거나 C#이 C#으로 컴파일되지 않았다고 말할 수 있습니다. 이후에 등장한 다른 컴파일러는 다음과 같습니다.

1. 로슬린

이전에는 컴파일러가 C/C++로 작성되었습니다. Roslyn은 C++ 코드가 대체된 오픈 소스 .Net 컴파일러입니다. 코드의 요소 유형과 서로의 관계를 가져옵니다. 따라서 C# 및 VB 팀이 컴파일러를 작성했기 때문에 두 가지 모두에 Visual Studio 템플릿을 사용할 수 있습니다. 이를 통해 소스 파일을 구문 분석하는 코드를 작성할 수 있으며 소스 코드를 쉽게 수정할 수 있습니다.

다음은 Roslyn의 4가지 API 레이어입니다

  • 스크립팅 API: 이 레이어는 런타임 실행 컨텍스트를 제공하고 C#을 스크립팅 언어로 사용할 수 있도록 하며 Visual Studio 구성 요소에 종속되지 않습니다.
  • 컴파일러 API: 이 레이어는 구문에 사용되며 어셈블리 및 소스 코드 파일에 대한 참조를 포함합니다. 이 레이어는 Visual Studio 구성 요소에도 종속되지 않습니다.
  • 서비스 API: 이 레이어는 SDK 상단에 IntelliSense, 서식 지정, 모든 참조 찾기 등을 제공합니다. 또한 프로젝트에 대한 정보를 관리하고 프로젝트 종속성을 관리하는 데에도 도움이 됩니다.
  • Workspace API: 이 레이어는 주로 IDE를 통한 코드 분석 및 리팩터링에 사용됩니다. Roslyn은 코드를 더 쉽게 만들고 형식 지정, Intellisense 등과 같은 많은 기능을 제공하는 컴파일러 및 서비스와 같은 API 세트로 ​​구성됩니다. 여러 언어에 대한 지원을 제공합니다. Workspace API는 소스 코드에 대한 심층적인 정보를 제공합니다.

2. 모노 컴파일러

C#용 ECMA 표준을 기반으로 하는 모노 C# 컴파일러입니다. C# 1.0, 2.0, 3.0, 4.0과 같은 프레임워크를 갖춘 여러 버전이 있습니다. 모노 컴파일러 mcs는 프레임워크 1.1을 대상으로 하고, gmcs는 프레임워크 2.0을 대상으로 하며, smcs와 dmcs는 각각 프레임워크 2.1과 4.0을 대상으로 합니다.

  • mcs: 익명 메서드, null 허용 유형, 고정 버퍼, 속성에 대한 액세스 한정자, 정적 클래스 등과 같은 모든 C# 1.1 기능을 지원합니다.
  • gmcs: 쿼리 표현식, 객체 이니셜라이저, 부분 메서드, 람다 표현식, 자동으로 구현된 속성 등과 같은 C# 2.0 기능을 지원합니다.
  • dmcs: 명명된 인수, 일반 유형 변형, 동적 바인딩 등을 포함하는 C# 4.0 기능을 지원합니다.

EMCA 사양에 따라 C# 표준을 따르는 RemObjects C# 컴파일러와 같은 다른 컴파일러와 C# 및 .Net을 구현하는 GNU C# 컴파일러가 있습니다.

결론

C# 컴파일러는 프로세서가 프로세스를 이해할 수 있도록 코드를 기계어 코드로 컴파일하는 다른 컴파일러와 같습니다.

위 내용은 C# 컴파일러의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿