C# 컴파일러
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 컴파일러의 종류
Just-In-Time 컴파일러에는 세 가지가 있습니다
1. 사전 JIT 컴파일러
본 컴파일러에서는 소스코드 전체가 네이티브 코드로 컴파일되기 때문에 컴파일 과정은 단 한 번뿐입니다.
2. 일반 JIT 컴파일러
이 컴파일러에서는 해당 메소드만 런타임에 필요한 기계어 코드로 컴파일됩니다. 컴파일러는 해당 메소드를 컴파일하고 캐시에 저장한 후 동일한 메소드를 다시 사용합니다.
3. Econo JIT 컴파일러
이 컴파일러에서는 해당 메소드만 런타임에 필요한 기계어 코드로 컴파일되지만 필요하지 않은 경우 이러한 메소드는 제거됩니다. JIT에서는 필요한 메소드만 런타임에 컴파일되므로 메모리 사용량이 적습니다.
위 도표에서
컴파일 시 1~3단계가 실행됩니다
런타임에 3~5단계가 실행됩니다.
그래서 실행하면 이 두 가지 오류가 발생합니다.
런타임 오류 및 컴파일러 오류
- 컴파일러 오류: 이 유형의 오류는 C# 컴파일러 자체에서 발생합니다. 이는 C# 코드가 .exe 형식으로 컴파일되는 것을 방지합니다. 이러한 오류는 기본적으로 구문 오류로 인해 발생합니다. 구문을 잘못 입력하거나 쉼표나 세미콜론을 놓친 경우 컴파일러는 이를 이해하지 못하여 처리를 중지하고 컴파일 시간 오류를 발생시킵니다. IDE의 출력 창에서 이러한 오류를 볼 수 있습니다. 따라서 이러한 오류를 검사하여 코드를 수정할 수 있습니다.
- 런타임 오류: 실시간 오류입니다. 이는 코드가 성공적으로 컴파일되었지만 실행 중에 문제가 발생할 때 발생합니다. 이는 코드 동작에 영향을 미칩니다. 예를 들어, 숫자를 0으로 나누려고 하면 런타임 오류가 발생한다고 말할 수 있습니다. 이러한 오류는 컴파일러 오류보다 더 지루합니다. 이 경우 코드 동작을 수정해야 하기 때문입니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C#을 사용한 Active Directory 가이드. 여기에서는 소개와 구문 및 예제와 함께 C#에서 Active Directory가 작동하는 방식에 대해 설명합니다.

C#의 난수 생성기 가이드입니다. 여기서는 난수 생성기의 작동 방식, 의사 난수 및 보안 숫자의 개념에 대해 설명합니다.

C# 데이터 그리드 뷰 가이드. 여기서는 SQL 데이터베이스 또는 Excel 파일에서 데이터 그리드 보기를 로드하고 내보내는 방법에 대한 예를 설명합니다.

멀티 스레딩과 비동기식의 차이점은 멀티 스레딩이 동시에 여러 스레드를 실행하는 반면, 현재 스레드를 차단하지 않고 비동기식으로 작업을 수행한다는 것입니다. 멀티 스레딩은 컴퓨팅 집약적 인 작업에 사용되며 비동기식은 사용자 상호 작용에 사용됩니다. 멀티 스레딩의 장점은 컴퓨팅 성능을 향상시키는 것이지만 비동기의 장점은 UI 스레드를 차단하지 않는 것입니다. 멀티 스레딩 또는 비동기식을 선택하는 것은 작업의 특성에 따라 다릅니다. 계산 집약적 작업은 멀티 스레딩을 사용하고 외부 리소스와 상호 작용하고 UI 응답 성을 비동기식으로 유지 해야하는 작업을 사용합니다.
