.net - qué - que significa clr
¿Hay un CLR que se ejecuta en el CLR? (6)
Debería ver el Proyecto IKVM.NET . Incluye una máquina virtual Java escrita en .NET.
Sé que no es un CLR real que se ejecuta en la CLR, pero es lo más cercano que sé que hace lo que quieres.
Me preguntaba si existía un CLR compatible con .NET que se implementó utilizando la CLI (infraestructura de lenguaje común), por ejemplo, usando .NET en sí, o al menos si había algún recurso que ayudaría a crear uno.
Básicamente, algo así como un programa .NET que carga ensamblajes como MemoryStreams, analiza el bytecode, construye los tipos y ejecuta las instrucciones. Opcionalmente, puede JIT-compilar a IL estándar usando Reflection.Emit o sin embargo.
No quiero compilar un lenguaje .NET para ser ejecutado por el CLR original. Quiero un CLR escrito en un lenguaje .NET (no C ++ o C no administrado como suele ser) y ejecuta CIL. Si se hace bien, debería poder ejecutarse solo.
¿Alguna idea sobre el uso de Mono.Cecil para este tipo de cosas?
Mire el espacio de nombres System.Reflection.Emit, específicamente la clase ILGenerator.
Puede emitir IL sobre la marcha.
http://msdn.microsoft.com/en-us/library/system.reflection.emit.ilgenerator_members.aspx
No creo que actualmente existan máquinas virtuales de .net independientes que sean autohospedantes, pero tanto Cosmos como SharpOS son ejecutables en .NET escritos en C #.
Es posible reutilizar parte de su código de tiempo de ejecución para agregar un tiempo de ejecución independiente. Cosmos se puede usar para alojar una aplicación personalizada al arrancar: http://www.codeproject.com/KB/system/CosmosIntro.aspx
Si está dispuesto a ampliar su definición de "ejecuta CIL" a "JIT-Compila CIL con código nativo", entonces debe consultar la Alianza de sistema operativo administrado , un grupo de personas (yo incluido) que trabaja para crear el tiempo de ejecución. piezas necesarias para escribir un núcleo del sistema operativo administrado.
Actualmente, queda mucho por hacer, pero es posible compilar JIT y ejecutar métodos simples (solo Win32; actualmente usamos P / Invoke para crear los búferes de código nativo)
En principio, es posible combinar tecnologías:
- Jikes RVM es una implementación de Java Virtual Machine escrita en Java.
- IKVM.NET , una implementación de la plataforma Java en .NET.
También es posible tomar Mono , compilar a bytecode LLVM, compilar el bytecode en Javascript usando Emscripten , y ejecutar el Javascript en .NET usando cualquiera de los varios intérpretes.