IL2C merupakan penerjemah (transpiler) ECMA-335 CIL/MSIL ke bahasa C.
Kami bertujuan untuk:
Prediktabilitas biaya runtime yang lebih baik
Keterbacaan manusia yang lebih baik atas kode sumber C yang diterjemahkan oleh IL2C.
Persyaratan tapak yang sangat kecil
Kami sedang memikirkan cara menyesuaikan dari sistem besar dengan banyak sumber daya ke sistem kecil yang tertanam. (Pesanan KB untuk sistem non-OS)
Portabilitas kode/runtime yang lebih baik
Persyaratan minimum hanya kompiler C99. Minimum runtime hanya memerlukan heap, instruksi CAS, sinyal (POSIX) dan setjmp/longjmp. Fitur tambahan yang lebih baik adalah threading API (Win32, pthreads dan FreeRTOS.)
Interoperabilitas yang lebih baik untuk perpustakaan C yang ada
Anda dapat menggunakan teknik interop .NET standar (seperti P/Invoke.)
Berisi sistem pembangunan yang mulus untuk toolkit C utama
misalnya: sistem CMake, Arduino IDE, VC++ ...
Kode sumber C# asli:
public static class HelloWorld{public static void Main(){Console.WriteLine("Halo dunia dengan IL2C!");}}
Diterjemahkan ke kode sumber C (semua komentar dihapus):
IL2C_CONST_STRING(string0__, L"Halo dunia dengan IL2C!");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; }
Lihat dengan komentar / contoh hasil terjemahan lainnya (berisi hasil yang kompleks)
Status IL2C saat ini adalah eksperimental , baca "Memulai" sederhana untuk langkah pertama.
Jika Anda memerlukan pemahaman pengetahuan mendalam tentang IL2C, lihat "Inside IL2C" .
Daftar berikut dibuat secara otomatis oleh pengujian unit.
Daftar opcode IL yang didukung
Tipe dasar yang didukung
Fitur sistem runtime yang didukung
Fitur yang didukung (lama)
Paket | menguasai | berkembang |
---|---|---|
IL2C.Bangun | ||
IL2C.Interop | ||
IL2C.Inti | ||
IL2C.Waktu berjalan | ||
IL2C.Runtime.msvc | ||
IL2C.Waktu Proses.Arduino | (Membangun) | (Membangun) |
Konfigurasi | menguasai |
---|---|
Menerbitkan | |
Men-debug | |
Melepaskan |
Konfigurasi | berkembang |
---|---|
Menerbitkan | |
Men-debug | |
Melepaskan |
Di bawah Apache v2.
Slide: Membuat arsip IL2C
Meliputi informasi keseluruhan tentang IL2C internal.
Sesi #6-52 di konferensi dotNET 600 2018.
Slide: Tulis yang umum, jalankan di mana saja
Sesi #6-51 di konferensi dotNET 600 2017
Video sesi (Jepang)
Kalkulator notasi Polandia: Implan minimum namun berguna untuk "Win32", "UEFI" dan "M5Stack(ESP32)"
Slide : Cara membuat kalkulator / Membuat arsip IL2C
Sesi #6-52 di .NET Fringe Jepang 2018
Slide: Membuat arsip IL2C
Sesi #6-53 dalam Pertemuan MVP Summit F# / SEATTLE F# USERS GROUP
Slide: Membuat arsip IL2C
Sesi #6-54 di Microsoft MVP Global Summit 2018 – VS HACKATHON"
Video sesi (Bahasa Jepang): "Membuat arsip daftar putar IL2C"
"Bagaimana cara membuat IL2C atau alat yang mirip dengan IL2CPP? Anda lihat, proses desain murni saja yang menyertakan konsepnya."
Sesi #1 di Pusat CLR #6
Surat video (Jepang): Menguji IL2C pada platform micro:bit dan arduino
Video sesi (Bahasa Jepang): Pembuatan arsip IL2C
Sesi #6-28 di .NET Conf 2017 di Tokyo Room B
Informasi Milestone 2+ (Jepang): Xamarin yang Luas - Xamaritans
termasuk dalam buklet "Extensive Xamarin - Techbook Fest part 3"
#6-6: Hampir mencapai pencapaian
#6-14: Analisis aliran data
Milestone 1: Uji pada VC++ dan periksa cara kerja pengoptimal kompiler C.
#6-48: Cara kerja pengumpulan sampah mark-and-sweep pada kode yang diterjemahkan.
Cara kerja kalkulus simbol metode kelebihan beban/override/virtual.
Bagaimana menerjemahkan penangan pengecualian saat menggabungkan pelepasan lokal dan pelepasan global.
Kami sedang memikirkan di Center CLR Coba! pertemuan pembangunan (10/11/2018, Jepang)
Ini adalah grafik struktur untuk bingkai pengecualian dan bingkai pengecualian.