Question

Je me demandais s'il existait un CLR compatible .NET implémenté à l'aide de la CLI (infrastructure de langage commun), par exemple, à l'aide de .NET lui-même, ou du moins s'il existait des ressources aiderait à en construire un.

En gros, il s’agit d’un programme .NET qui charge les assemblys sous forme de MemoryStreams, analyse le bytecode, construit les types et exécute les instructions. En option, il peut compiler JIT en IL standard à l’aide de Reflection.Emit ou d’une autre manière.

Je ne souhaite pas compiler un langage .NET à exécuter par le CLR d'origine. Je souhaite un CLR écrit dans un langage .NET (et non comme C ++ ou C non géré, comme il est habituellement utilisé) et exécute CIL. Si cela est fait correctement, il devrait être capable de fonctionner tout seul.

Avez-vous des idées sur l'utilisation de Mono.Cecil pour ce genre de chose?

Était-ce utile?

La solution

Je ne pense pas qu'il y ait actuellement de machine virtuelle .net autonome qui s'auto-héberge mais les deux Cosmos et < a href = "http://sharpos.org" rel = "noreferrer"> SharpOS sont des environnements d'exécution .net écrits en C #.

Il peut être possible de réutiliser une partie de leur code d’exécution pour créer un environnement d’exécution autonome. Cosmos peut être utilisé pour héberger une application personnalisée au démarrage: http://www.codeproject.com /KB/system/CosmosIntro.aspx

Autres conseils

Vous devriez consulter le projet IKVM.NET . Il comprend une machine virtuelle Java écrite en .NET.

http://www.ikvm.net/

Je sais que ce n'est pas un CLR réel qui fonctionne sur le CLR, mais c'est la chose la plus proche que je connaisse qui fasse ce que vous voulez.

Je n'en connais pas, mais les idées de la machine virtuelle Java s'exécutant sur cette dernière devraient être utiles.

Si vous souhaitez développer votre définition de " exécute CIL " to "JIT-Compile CIL to Native Code" alors vous devriez regarder la Alliance du système d'exploitation géré - un groupe de personnes (moi-même inclus) travaillant pour créer les éléments d’exécution nécessaires à l’écriture d’un noyau de système d’exploitation géré.

Actuellement, il reste encore un peu à faire, mais il est possible de compiler JIT et d’exécuter des méthodes simples (Win32 uniquement - nous utilisons actuellement P / Invoke pour créer les tampons de code natif)

En principe, il est possible de combiner des technologies:

  • Jikes RVM est une implémentation de machine virtuelle Java écrite en Java.
  • IKVM.NET , une implémentation de la plate-forme Java sur .NET.

Il pourrait également être possible d’utiliser Mono , de compiler en octet LLVM, compilez le code binaire en Javascript à l'aide de Emscripten , puis exécutez le code Javascript sous .NET en utilisant l'un des différents interpréteurs.

Regardez l'espace de noms System.Reflection.Emit, en particulier la classe ILGenerator.

Vous pouvez émettre l'IL à la volée.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top