IL2C は、ECMA-335 CIL/MSIL から C 言語へのトランスレータ (トランスパイラ) です。
私たちが目指しているのは:
実行時コストの予測可能性の向上
IL2C によって翻訳された C ソース コードの可読性が向上しました。
非常に小さな設置面積の要件
私たちは、多くのリソースを備えた大規模システムから小規模な組み込みシステムまでをどのように適合させるかを考えています。 (非 OS システムの場合は KB オーダー)
コード/ランタイム移植性の向上
最小要件は C99 コンパイラのみです。実行時に最低限必要なのは、ヒープ、CAS 命令、(POSIX) シグナル、および setjmp/longjmp のみです。さらに優れた機能はスレッド API (Win32、pthreads、FreeRTOS) です。
既存の C ライブラリの相互運用性の向上
標準の .NET 相互運用技術 (P/Invoke など) を使用できます。
主要な C ツールキット用のシームレスな構築システムが含まれています
例: CMake システム、Arduino IDE、VC++ ...
元の C# ソース コード:
public static class HelloWorld{public static void Main(){Console.WriteLine("IL2C で Hello world!");}}
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__; } Frame__ = { 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 に関する深い知識が必要な場合は、「IL2C の内部」を参照してください。
次のリストは単体テストによって自動生成されます。
サポートされている IL オペコードのリスト
サポートされている基本タイプ
サポートされているランタイム システム機能
サポートされている機能 (旧)
パッケージ | マスター | 開発する |
---|---|---|
IL2C.ビルド | ||
IL2C.相互運用性 | ||
IL2C.コア | ||
IL2C.ランタイム | ||
IL2C.ランタイム.msvc | ||
IL2C.ランタイム.Arduino | (建設中) | (建設中) |
構成 | マスター |
---|---|
公開 | |
デバッグ | |
リリース |
構成 | 開発する |
---|---|
公開 | |
デバッグ | |
リリース |
Apache v2 の下。
スライド: アーカイブ IL2C の作成
内部 IL2C に関する全般的な情報をカバーします。
dotNET 600 2018 カンファレンスの #6-52 セッション。
スライド: 共通の書き込み、どこでも実行可能
dotNET 600 2017 カンファレンスの #6-51 セッション
セッション動画(日本語)
ポーランド語表記の電卓: 「Win32」、「UEFI」、および「M5Stack(ESP32)」向けの最小限だが便利なインプリメント
スライド: 電卓の作り方 / アーカイブ IL2C の作成
#6-52 セッション in .NET Fringe Japan 2018
スライド: アーカイブ IL2C の作成
MVP Summit F# Meetup の #6-53 セッション / SEATTLE F# USERS GROUP
スライド: アーカイブ IL2C の作成
Microsoft MVP Global Summit 2018 の #6-54 セッション – VS HACKATHON」
セッション動画(日本語):「アーカイブIL2Cプレイリストの作成」
「IL2C または IL2CPP に似たツールを作成するにはどうすればよいですか? 純粋な設計プロセスにコンセプトが含まれていることがわかります。」
センター CLR #6 での #1 セッション
ビデオレター (日本語): micro:bit および Arduino プラットフォームで IL2C をテストしました
セッションビデオ(日本語): アーカイブ IL2C の作成
.NET Conf 2017 東京 ルーム B の #6-28 セッション
Milestone 2+ 情報 (日本語): 広範な Xamarin - Xamaritans
小冊子「Xamarin 徹底解説 - Techbook Fest パート 3」に収録
#6-6: マイルストーンに近い
#6-14: データフロー分析
マイルストーン 1: VC++ でテストし、C コンパイラーのオプティマイザーがどのように動作するかを確認します。
#6-48: マークアンドスイープ ガベージ コレクションが翻訳されたコードでどのように機能するか。
オーバーロード/オーバーライド/仮想メソッド シンボル計算の仕組み。
ローカル アンワインドとグローバル アンワインドを組み合わせた場合に例外ハンドラーを変換する方法。
センターCLRトライで考えています!開発ミートアップ (2018/11/10、日本語)
これは実行フレームと例外フレームの構造グラフです。