Существует ли среда CLR, которая работает на CLR?

StackOverflow https://stackoverflow.com/questions/151298

  •  02-07-2019
  •  | 
  •  

Вопрос

Мне было интересно, существует ли .NET-совместимая среда CLR, которая была реализована с использованием CLI (инфраструктура общего языка), например, использование .Сама СЕТЬ, или, по крайней мере, были ли какие-либо ресурсы, которые помогли бы в ее создании.

По сути, что-то вроде .NET-программы, которая загружает сборки в виде потоков памяти, анализирует байт-код, создает типы и выполняет инструкции.При желании он может JIT-компилироваться в стандартный IL с использованием отражения.Испускать или однако.

Я не хочу этого делать скомпилировать язык .NET, который будет запускаться исходной средой CLR.Мне нужен CLR, который написанный на языке .NET (не неуправляемый C ++ или C, как это обычно бывает) и бежит СИЛ. Если все сделано правильно, он должен быть способен работать сам по себе.

Есть какие-нибудь мысли по использованию Mono.Сесил для таких дел?

Это было полезно?

Решение

Я не думаю, что в настоящее время существуют какие-либо автономные виртуальные машины .net, которые работают самостоятельно, но и те, и другие Космос и Шарпос среды выполнения .net написаны на C #.

Возможно, удастся повторно использовать часть их кода времени выполнения для создания дополнительной автономной среды выполнения.Cosmos можно использовать для размещения пользовательского приложения при загрузке: http://www.codeproject.com/KB/system/CosmosIntro.aspx

Другие советы

Вам следует ознакомиться с IKVM.NET Проект.Он включает в себя виртуальную машину Java, написанную на .NET.

http://www.ikvm.net/

Я знаю, что это не настоящая среда CLR, которая работает поверх CLR, но это самая близкая вещь, которую я знаю, которая делает то, что вы хотите.

Я не в курсе ни одного, но идеи frm JVM, работающие на JVM, должны быть полезны.

Если вы готовы расширить свое определение "запускает CIL" до "JIT-компилирует CIL в машинный код", тогда вам следует взглянуть на Альянс управляемых операционных систем -- группа людей (включая меня), работающих над созданием компонентов среды выполнения, необходимых для написания управляемого ядра операционной системы.

В настоящее время осталось сделать совсем немного, но можно JIT-скомпилировать и запустить простые методы (только для Win32 - в настоящее время мы используем P / Invoke для создания буферов машинного кода)

В принципе, это возможно путем объединения технологий:

  • Джайкс РВМ это реализация виртуальной машины Java, написанная на Java.
  • IKVM.NET, реализация платформы Java в .NET.

Возможно, также можно было бы взять Моно, скомпилировать в байт-код LLVM, скомпилировать байт-код в Javascript с помощью Эмскриптен, и запустите Javascript в .NET, используя любой из различных интерпретаторов.

Посмотрите на System.Отражение.Пространство имен Emit, в частности класс ILGenerator .

Вы можете испускать IL на лету.

http://msdn.microsoft.com/en-us/library/system.reflection.emit.ilgenerator_members.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top