6
votes

Machine virtuelle open source

Je recherche une machine virtuelle open source qui est:

  • rapide et aussi léger que possible
  • prend en charge un ensemble minimal de bytecode (comme LLVM IR)
  • facilement intégré à une application C ++
  • Plate-forme transversale (Linux, Windows et OS X)
  • Support X86

1 commentaires

Hmm, personne jamais demande une solution lente, lourde et source fermée. Pourquoi n'utilisez-vous pas simplement le Java JVM?


4 Réponses :


6
votes

Lua est célèbre pour être ridiculement facile à incorporer en C / C ++. Sa machine virtuelle est une source ouverte et une plate-forme inter-plate-forme, très petite (ensemble d'instructions de taille EXE et de bytecode) et en même temps assez rapidement. Mais son bytecode ne convient pas à votre langue. Le format ByTecode est documenté ici.


1 commentaires

La machine virtuelle de Lua n'est pas une machine virtuelle à usage général mais elle peut fonctionner pour votre langue personnalisée si votre langue et votre Lua ne sont pas trop éloignées sémantiquement. Une brève description de la machine virtuelle de Lua est à Lua.org/source/5.1/ lopcodes.h.html # op_move . Si vous allez de cette façon, je vous suggère d'essayer d'essayer de compiler votre langue de la langue à Lua Code source.



5
votes

Nekovm est une langue de programmation et une machine virtuelle légère conçue comme une cible générique pour les écrivains du compilateur. La documentation montre qu'il semblerait vraiment facile d'intégrer la machine virtuelle dans une application C ou C ++, mais il semble que la VM L'API n'est pas encore documenté.


0 commentaires

4
votes

Pourquoi filtrer LLVM? C'est Un ensemble de bibliothèques C

Je suppose que ce n'est pas aussi facile à intégrer que Lua, mais LLVM est si génial que cela viendrait probablement surmonter les tracas de l'intégrer. Voir cette question à la question , aidez-t-elle?


0 commentaires

2
votes

Autre réponse possible: pourquoi ne pas sortir assembleur à la place? Il est rapide et léger, et vous n'avez pas besoin de VM du tout. Puisque vous cible X86 seulement, cela pourrait avoir du sens, en fonction de ce que vous essayez de faire.


0 commentaires