IL2C는 ECMA-335 CIL/MSIL을 C 언어로 번역하는 번역기(transpiler)입니다.
우리의 목표는 다음과 같습니다.
런타임 비용의 예측 가능성 향상
IL2C로 번역된 C 소스 코드의 가독성이 향상되었습니다.
매우 작은 설치 공간 요구 사항
우리는 리소스가 많은 대규모 시스템부터 작은 임베디드 시스템까지 어떻게 맞출 수 있을지 고민하고 있습니다. (비OS 시스템의 경우 KB 순서)
더 나은 코드/런타임 이식성
최소 요구 사항은 C99 컴파일러뿐입니다. 최소 런타임에는 힙, CAS 명령어, (POSIX) 신호 및 setjmp/longjmp만 필요합니다. 추가적인 더 나은 기능은 스레딩 API(Win32, pthreads 및 FreeRTOS)입니다.
기존 C 라이브러리의 상호 운용성 향상
P/Invoke와 같은 표준 .NET 상호 운용성 기술을 사용할 수 있습니다.
주요 C 툴킷을 위한 원활한 구축 시스템 포함
예: CMake 시스템, Arduino IDE, VC++...
원본 C# 소스 코드:
public static class HelloWorld{public static void Main(){Console.WriteLine("Hello world with IL2C!");}}
C 소스 코드로 번역됨(모든 주석이 제거됨):
IL2C_CONST_STRING(string0__, L"IL2C와 함께하는 Hello World!");void HelloWorld_Main() {struct{const IL2C_EXECUTION_FRAME* pNext__;const uint16_t objRefCount__;const uint16_t valueCount__;System_String* stack0_0__; } 프레임__ = { NULL, 1, 0 };il2c_link_execution_frame(&frame__);frame__.stack0_0__ = string0__;System_Console_WriteLine_10(frame__.stack0_0__);il2c_unlink_execution_frame(&frame__);return; }
코멘트와 함께 보기 / 기타 샘플 번역 결과 (복잡한 결과 포함)
IL2C 현재 상태는 실험적 입니다. 첫 번째 단계로 간단한 "시작하기"를 읽어보세요.
IL2C에 대한 깊은 지식을 이해해야 하는 경우 "Inside IL2C"를 참조하세요.
다음 목록은 단위 테스트에 의해 자동 생성됩니다.
지원되는 IL opcode 목록
지원되는 기본 유형
지원되는 런타임 시스템 기능
지원되는 기능(이전)
패키지 | 주인 | 개발 |
---|---|---|
IL2C.빌드 | ||
IL2C.Interop | ||
IL2C.코어 | ||
IL2C.런타임 | ||
IL2C.런타임.msvc | ||
IL2C.런타임.아두이노 | (건설 중) | (건설 중) |
구성 | 주인 |
---|---|
게시 | |
디버그 | |
풀어 주다 |
구성 | 개발 |
---|---|
게시 | |
디버그 | |
풀어 주다 |
Apache v2에서.
슬라이드: 아카이브 IL2C 만들기
내부 IL2C에 대한 전반적인 정보를 다룹니다.
dotNET 600 2018 컨퍼런스의 #6-52 세션입니다.
슬라이드: 공통으로 작성하고 어디에서나 실행 가능
dotNET 600 2017 컨퍼런스의 #6-51 세션
세션 영상(일본어)
폴란드어 표기법 계산기: "Win32", "UEFI" 및 "M5Stack(ESP32)"에 대한 최소이지만 유용한 암시입니다.
슬라이드: 계산기 만드는 방법 / 아카이브 IL2C 만들기
.NET Fringe Japan 2018의 #6-52 세션
슬라이드: 아카이브 IL2C 만들기
MVP Summit F# 모임/시애틀 F# 사용자 그룹의 #6-53 세션
슬라이드: 아카이브 IL2C 만들기
Microsoft MVP Global Summit 2018 – VS HACKATHON의 #6-54 세션"
세션 비디오(일본어): "아카이브 IL2C 재생 목록 만들기"
"IL2C 또는 IL2CPP와 유사한 도구를 만드는 방법은 무엇입니까? 순수한 설계 프로세스에는 개념이 포함되어 있습니다."
Center CLR #6의 #1 세션
영상편지(일본어): micro:bit 및 arduino 플랫폼에서 IL2C를 테스트했습니다.
세션 비디오(일본어): 아카이브 IL2C 만들기
도쿄 룸 B에서 열린 .NET Conf 2017의 #6-28 세션
마일스톤 2+ 정보(일본어): 광범위한 Xamarin - Xamaritans
"Extensive Xamarin - Techbook Fest part 3" 소책자에 포함되어 있습니다.
#6-6: 가까운 이정표
#6-14: 데이터 흐름 분석
마일스톤 1: VC++에서 테스트하고 C 컴파일러의 최적화 프로그램이 어떻게 작동하는지 확인합니다.
#6-48: 번역된 코드에서 표시 및 청소 가비지 수집이 작동하는 방식.
오버로드/오버라이드/가상 메소드 기호 계산이 작동하는 방식.
로컬 해제와 전역 해제를 결합할 때 예외 처리기를 변환하는 방법입니다.
Center CLR Try에서 고민 중입니다! 개발 밋업(2018년 11월 10일, 일본어)
실행 프레임과 예외 프레임의 구조 그래프입니다.