IL2C es un traductor (transpilador) de ECMA-335 CIL/MSIL al lenguaje C.
Nuestro objetivo es:
Mejor previsibilidad de los costos de tiempo de ejecución
Mejor legibilidad humana del código fuente C traducido por IL2C.
Requisitos de huella muy pequeños
Estamos pensando en cómo adaptarnos desde un sistema grande con muchos recursos a un sistema integrado pequeño. (Pedido de KB para sistemas sin SO)
Mejor portabilidad de código/tiempo de ejecución
El requisito mínimo es sólo el compilador C99. El tiempo de ejecución mínimo requiere solo el montón, instrucciones CAS, señal (POSIX) y setjmp/longjmp. Otra característica mejor es la API de subprocesos (Win32, pthreads y FreeRTOS).
Mejores interoperabilidades para las bibliotecas C existentes
Puede utilizar las técnicas de interoperabilidad estándar de .NET (como P/Invoke).
Contiene sistemas de construcción integrados para los principales kits de herramientas de C.
por ejemplo: sistema CMake, Arduino IDE, VC++...
Código fuente original de C#:
clase estática pública HolaMundo{public static void Main(){Console.WriteLine("¡Hola mundo con IL2C!");}}
Traducido al código fuente C (se eliminan todos los comentarios):
IL2C_CONST_STRING(string0__, L"¡Hola mundo con 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; }
Ver con comentarios/otros resultados de traducción de muestra (contiene resultados complejos)
El estado actual de IL2C es experimental ; lea un sencillo "Cómo comenzar" para conocer el primer paso.
Si necesita un conocimiento profundo de IL2C, consulte "Dentro de IL2C".
Las siguientes listas se generan automáticamente mediante prueba unitaria.
Lista de códigos de operación IL soportados
Tipos básicos soportados
Funciones del sistema de tiempo de ejecución compatibles
Funciones compatibles (antiguas)
Paquetes | maestro | desarrollar |
---|---|---|
IL2C.Construcción | ||
IL2C.Interoperabilidad | ||
IL2C.Core | ||
IL2C.Tiempo de ejecución | ||
IL2C.Runtime.msvc | ||
IL2C.Runtime.Arduino | (Construyendo) | (Construyendo) |
Configuración | maestro |
---|---|
Publicar | |
Depurar | |
Liberar |
Configuración | desarrollar |
---|---|
Publicar | |
Depurar | |
Liberar |
Bajo Apache v2.
Diapositiva: Crear archivo IL2C
Cubre información general sobre IL2C interno.
Sesión #6-52 en la conferencia dotNET 600 2018.
Diapositiva: Escriba en común, ejecútelo en cualquier lugar
#6-51 sesión en la conferencia dotNET 600 2017
Vídeo de la sesión (japonés)
Calculadora de notación polaca: implicaciones mínimas pero útiles para "Win32", "UEFI" y "M5Stack(ESP32)"
Diapositiva: Cómo hacer la calculadora / Cómo crear el archivo IL2C
#6-52 sesión en .NET Fringe Japón 2018
Diapositiva: Crear archivo IL2C
#6-53 sesión en MVP Summit F# Meetup / SEATTLE F# USERS GROUP
Diapositiva: Crear archivo IL2C
Sesión #6-54 en Microsoft MVP Global Summit 2018 – VS HACKATHON"
Vídeo de la sesión (japonés): "Creación de una lista de reproducción de archivos IL2C"
"¿Cómo crear IL2C o una herramienta similar a IL2CPP? Verás, simplemente el proceso de diseño puro incluye el concepto".
Sesión #1 en el Centro CLR #6
Carta en vídeo (japonés): IL2C probado en plataforma micro:bit y arduino
Vídeo de la sesión (japonés): Cómo crear el archivo IL2C
#6-28 sesión en .NET Conf 2017 en la Sala B de Tokio
Información de Milestone 2+ (japonés): Xamarin extensivo - Xamaritans
incluido en el folleto "Extensive Xamarin - Techbook Fest parte 3"
#6-6: Cerca de hitos
#6-14: Análisis del flujo de datos
Hito 1: Pruebe en VC++ y compruebe cómo funciona el optimizador del compilador de C.
#6-48: Cómo funciona la recolección de basura de marcado y barrido en un código traducido.
Cómo funciona el cálculo de símbolos de sobrecarga/anulación/método virtual.
Cómo traducir controladores de excepciones cuando se combinan la relajación local y la relajación global.
Estamos pensando en Centro CLR ¡Pruébalo! reunión de desarrollo (10/11/2018, japonés)
Este es el gráfico de estructura para el marco de ejecución y el marco de excepción.