IL2C هو مترجم (transpiler) من ECMA-335 CIL/MSIL إلى لغة C.
نحن نهدف إلى:
إمكانية التنبؤ بشكل أفضل بتكاليف وقت التشغيل
إمكانية قراءة بشرية أفضل لكود مصدر لغة C المترجم بواسطة IL2C.
متطلبات بصمة صغيرة جدًا
نحن نفكر في كيفية الانتقال من نظام كبير يحتوي على العديد من الموارد إلى نظام صغير مضمن. (ترتيب قاعدة المعارف للنظام غير التابع لأنظمة التشغيل)
إمكانية نقل أفضل للكود/وقت التشغيل
الحد الأدنى من المتطلبات هو مترجم C99 فقط. يتطلب الحد الأدنى لوقت التشغيل فقط الكومة وتعليمات CAS وإشارة (POSIX) وsetjmp/longjmp. ميزة إضافية أفضل هي Threading API (Win32 وpthreads وFreeRTOS.)
إمكانية تشغيل تفاعلي أفضل لمكتبات C الموجودة
يمكنك استخدام تقنيات التشغيل المتداخل .NET القياسية (مثل P/Invoc.)
تحتوي على أنظمة بناء سلسة لمجموعات أدوات C الرئيسية
على سبيل المثال: نظام CMake، Arduino IDE، VC++ ...
كود مصدر C# الأصلي:
فئة ثابتة عامة HelloWorld{public static void Main(){Console.WriteLine("مرحبًا بالعالم مع IL2C!");}}
تمت ترجمتها إلى كود مصدر C (تم تجريد جميع التعليقات):
IL2C_CONST_STRING(string0__, L"مرحبًا بالعالم مع 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; }
عرض مع التعليقات / نتائج ترجمة عينة أخرى (تحتوي على نتائج معقدة)
الوضع الحالي لـ IL2C تجريبي ، اقرأ "الخطوات الأولى" البسيطة للخطوة الأولى.
إذا كنت بحاجة إلى فهم المعرفة العميقة لـ IL2C، راجع "داخل IL2C".
يتم إنشاء القوائم التالية تلقائيًا عن طريق اختبار الوحدة.
قائمة أكواد التشغيل IL المدعومة
الأنواع الأساسية المدعومة
ميزات نظام وقت التشغيل المدعومة
الميزات المدعومة (القديمة)
الحزم | يتقن | تطوير |
---|---|---|
IL2C.Build | ||
IL2C.Interop | ||
IL2C.Core | ||
IL2C. وقت التشغيل | ||
IL2C.Runtime.msvc | ||
IL2C.Runtime.اردوينو | (بناء) | (بناء) |
إعدادات | يتقن |
---|---|
نشر | |
تصحيح | |
يطلق |
إعدادات | تطوير |
---|---|
نشر | |
تصحيح | |
يطلق |
تحت أباتشي v2.
الشريحة: إنشاء أرشيف IL2C
يغطي معلومات شاملة حول IL2C الداخلي.
#6-52 الجلسة في مؤتمر dotNET 600 2018.
الشريحة: اكتب مشتركًا، وقم بالتشغيل في أي مكان
#6-51 الجلسة في مؤتمر dotNET 600 2017
فيديو الجلسة (باللغة اليابانية)
حاسبة التدوين البولندية: الحد الأدنى، ولكنه مفيد لـ "Win32" و"UEFI" و"M5Stack(ESP32)"
الشريحة: كيفية صنع الآلة الحاسبة / عمل أرشيف IL2C
الجلسة رقم 6-52 في .NET Fringe Japan 2018
الشريحة: إنشاء أرشيف IL2C
الجلسة رقم 6-53 في MVP Summit F# Meetup / SEATTLE F# USERS GROUP
الشريحة: إنشاء أرشيف IL2C
الجلسة #6-54 في Microsoft MVP Global Summit 2018 – VS HACKATHON"
فيديو الجلسة (اليابانية): "إنشاء قائمة تشغيل أرشيفية لـ IL2C"
"كيف يتم إنشاء IL2C أو أداة مشابهة لـ IL2CPP؟ ترى فقط أن عملية التصميم الخالصة تتضمن المفهوم."
الجلسة رقم 1 في مركز CLR رقم 6
رسالة فيديو (باللغة اليابانية): تم اختبار IL2C على منصة micro:bit وarduino
فيديو الجلسة (اليابانية): عمل أرشيف IL2C
الجلسة رقم 6-28 في .NET Conf 2017 في طوكيو، الغرفة B
معلم 2+ المعلومات (اليابانية): Xamarin واسعة النطاق - Xamaritans
متضمن في كتيب "Extensive Xamarin - Techbook Fest الجزء 3"
رقم 6-6: قرب المعالم
#6-14: تحليل تدفق البيانات
المعلم الرئيسي 1: اختبار على VC++ والتحقق من كيفية عمل مُحسِّن برنامج التحويل البرمجي C.
#6-48: كيفية عمل مجموعة البيانات المهملة ذات العلامات والمسح على التعليمات البرمجية المترجمة.
كيف يعمل حساب التفاضل والتكامل لرموز التحميل الزائد/التجاوز/الطريقة الافتراضية.
كيفية ترجمة معالجات الاستثناء عند الجمع بين التفكيك المحلي والتفكيك العام.
نحن نفكر في مركز CLR حاول! لقاء التنمية (11/10/2018، اليابانية)
هذا هو الرسم البياني الهيكلي لإطار التنفيذ وإطار الاستثناء.