Pergunta

Eu queria saber se havia uma CLR .NET-compatível que foi implementado usando o CLI (infra-estrutura de linguagem comum), por exemplo, usando .NET em si, ou pelo menos se houvesse quaisquer recursos que iria ajudar com a construção de um.

Basicamente, algo como um programa de .NET que carrega montagens como MemoryStreams, analisa o bytecode, constrói os tipos, e executa as instruções. Opcionalmente, pode-JIT compilação para IL padrão usando Reflection.Emit ou no entanto.

Eu não quero compilação uma linguagem .NET para ser executado pelo CLR originais. Eu quero um CLR Isso é escrita em uma linguagem .NET (não gerenciado C ++ ou C, como geralmente é) e runs CIL. Se bem feito, ele deve ser capaz de executar em si.

Todos os pensamentos sobre o uso Mono.Cecil para este tipo de coisa?

Foi útil?

Solução

Eu não acho que há atualmente qualquer autônomo .net VMs que são auto hospedagem mas ambos Cosmos e < a href = "http://sharpos.org" rel = "noreferrer"> SharpOS são .net tempos de execução escrito em C #.

Pode ser possível reutilizar alguns dos seu código de tempo de execução para extra por tempo de execução independente. Cosmos pode ser usado para hospedar um aplicativo personalizado no boot: http://www.codeproject.com /KB/system/CosmosIntro.aspx

Outras dicas

Você deve verificar o IKVM.NET Projeto . Ele inclui uma máquina virtual Java escrito em .NET.

http://www.ikvm.net/

Eu sei que não é um CLR real que é executado no topo da CLR, mas é a coisa mais próxima que eu conheço que faz o que quiser.

Não tenho conhecimento de um, mas as idéias frm JVM em execução no JVM deve ser útil.

Se você está disposto a expandir sua definição de "corre CIL" para "JIT-compila CIL para código nativo", então você deve olhar para o Dirigido sistema Alliance operacional -. um grupo de pessoas (eu incluído) que trabalham para a criação de peças de tempo de execução necessários para escrever um kernel do sistema operacional gerenciada

Atualmente, há um pouco resta a fazer, mas é possível JIT-compilação e executar métodos simples (apenas Win32 - usamos atualmente P / Invoke para criar os buffers de código nativo)

É possível, em princípio, através da combinação de tecnologias:

  • Jikes RVM é uma implementação Java Virtual Machine escrito em Java.
  • IKVM.NET , uma implementação da plataforma Java no .NET.

Também pode ser possível tomar Mono , compilação para LLVM bytecode, compilar o bytecode para Javascript usando Emscripten , e executar o Javascript no .NET usando qualquer um dos vários intérpretes.

Olhe para o namespace System.Reflection.Emit, especificamente a classe ILGenerator.

Você pode emitir IL na mosca.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top