CIL의 정의

CIL(Common Intermediate Language)은 공용 중간 언어이다. .NET의 호환 가능한 언어들(C#, Visual Baisc, F#) 등도 CIL로 컴파일되어진다.

그리고 어플리케이션이 실행될 때, CLR의 JIT 컴파일러가 CIL 코드를 2진 코드로 변환하게 된다.

간단한 C# 코드가 CIL 로 어떻게 번역되는지 살펴보자.

using System;

namespace _2022_06_28
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello! What's your name?");
            var name = Console.ReadLine();

            Console.WriteLine($"Nice to meet you, {name}. How old are you?");

            var ageAsText = Console.ReadLine();

            if(int.TryParse(ageAsText, out var age))
			{
                Console.WriteLine($"That young, only {age}?");
            }
            else
			{
                Console.WriteLine("Sorry, I didn't get that.");
			}
            Console.WriteLine("Well, nice to meet you! Bye, bye!");
            Console.WriteLine();
        }
    }
}

번역되어진 CLI 코드를 보기 위해, 먼저 Visual Studio에 C# 예제코드를 빌드해주어야 한다.

다음으로 비쥬얼을 설치할 때, 함께 설치되는 IL DASM 이라는 프로그램을 로컬 경로(C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools) 에서 찾아 실행해야 한다.

다음으로 위에서 빌드한 C# 코드의 동적 연결 라이브러리(.dll) 파일을 로컬 경로(C:\Users\dkgke\source\repos\2022-06-28\2022-06-28\bin\Debug\net5.0) 에서 찾아 IL DASM에 드래그앤 드롭으로 연다.

4-1

프로젝트에서 Main 함수를 열어보면, 아래와 같이 CIL 코드를 확인할 수 있다. 말 그대로 2진 기계어로 번역되기 전의 중간언어라는 것을 눈으로 보게 되니 쉽게 이해할 수 있게 되었다.

4-2

JIT의 정의

위에서도 다루었던 내용이지만,

JIT(Just-In-Time)는 CLR(Common Language Runtime)의 한 기능으로, CIL을 2진 코드로 번역하는 기능을 수행한다.

댓글남기기