Chibil: .NET IL용 C 컴파일러

발행: (2026년 6월 1일 AM 12:46 GMT+9)
4 분 소요

Source: Hacker News

chibil이란

Chibil은 chibicc를 기반으로 C#로 다시 작성하고 .NET IL(MSIL)을 대상으로 하도록 업데이트한 C 컴파일러입니다.

DOOM (PureDOOM)을 실행할 정도로 충분히 완성되었습니다.

파이프라인

Chibil은 C 소스 파일을 받아 COFF OBJ 파일을 생성합니다. 이 OBJ 파일은 /clr 모드에서 MSVC 컴파일러가 만든 OBJ 파일과 바이너리 호환됩니다. Visual Studio의 link.exe를 사용해 객체 파일들을 연결하고 최종 실행 파일을 만듭니다. 실제로 C++/CLI와 Chibil이 만든 객체 파일을 섞어 사용할 수도 있습니다.

추후에 Chibil만의 링커가 추가될 가능성이 있습니다. 그 이유는 별다른 것이 아니라도 Windows가 필요 없게 하기 위함입니다.

디버깅

줄 번호와 로컬 변수는 기대대로 동작합니다. .NET 디버거에서 C 코드를 단계별로 실행할 수 있습니다.

표준 C 라이브러리

표준 라이브러리는 없습니다.

crt 디렉터리(crt)에 최소한의 C 런타임 스텁이 포함되어 있습니다. 여기서는 string[] 인자를 받아 C 표준 mainargcargv를 전달하는 실행 가능한 main을 제공합니다. 생성된 어셈블리는 asm2obj 유틸리티를 사용해 COFF 객체 파일로 변환되며, 이 파일을 C 코드와 함께 링크해 실행 가능한 main을 갖는 프로그램을 만들 수 있습니다.

.NET 코드에서 C 코드 사용하기

아직 완전하지 않습니다. 생성된 코드는 전역 네임스페이스에 들어가기 때문에, (EXE를 단순히 실행하는 것이 아니라) 다른 곳에서 컴파일된 코드를 사용하려면 Module.GetMethod(링크)와 같은 리플렉션을 이용해 메서드를 찾아 호출해야 합니다.

유용한 도구

tools/coffobjdumper.cs 파일에는 .NET OBJ 파일을 덤프하는 COFF OBJ 덤퍼가 들어 있습니다. 이 도구는 ILDASM(데스크톱 CLR ILDASM!)을 보완하여 COFF OBJ 파일에서 .NET 메타데이터를 덤프합니다(메서드 본문은 표시되지 않음). 또한 dumpbin.exe가 제공하는 제한된 .NET 메타데이터보다 더 많은 기능을 제공합니다.

0 조회
Back to Blog

관련 글

더 보기 »