Question

Qu'est-ce que les machines virtuelles d'application sont là-bas qui sont écrites dans les langues de niveau supérieur? C / C ++ ressemble les langues de choix (pour des raisons évidentes).

Ce que j'ai trouvé sur Google est au moins deux écrit en Java (deux méta-circulaire): JikesRVM et Maxine.

Rien d'autre que vous avez trouvé?

Était-ce utile?

La solution

  • De nombreuses implémentations Scheme sont écrites dans le schéma et bien que beaucoup d'entre eux sont des compilateurs ou interprètes, certains d'entre eux sont des machines virtuelles,
  • certaines implémentations CommonLisp sont écrites dans CommonLisp et bien que beaucoup d'entre eux sont des compilateurs ou interprètes, certains d'entre eux sont des machines virtuelles,
  • PyPy VM est écrit dans RPython, qui est un sous-ensemble de Python avec « la syntaxe et la sémantique de Python, vitesse de C, les restrictions des messages d'erreur Java et compilateur que pénétrable comme OREILLONS »,
  • Squeak Smalltalk VM est écrit dans l'argot (un sous-ensemble de Smalltalk Squeak) et
  • Klein Metacircular VM est écrit entièrement en soi.

Parmi eux, les plus intéressants sont Klein et Maxine (dont la conception est en fait basé sur Klein). mises en œuvre Metacircular Lisp et Scheme supposent généralement l'existence de certaines formes spéciales primitives de base, qui doivent ensuite être mises en œuvre en assembleur, C ou d'un sous-ensemble limité de la langue dans un style bas niveau. Squeak et PyPy utilisent un sous-ensemble limité de la langue. Jikes utilise des méthodes « magiques » et le style de bas niveau.

L'idée de Klein et Maxine est que tout est écrit en haut niveau, orienté objet, style expressif, idiomatiques. Dans la version actuelle de Klein, il n'y a que deux petits endroits où le style est entravée par une restriction: dans la mise en œuvre de l'envoi d'un message, vous ne pouvez pas envoyer des messages et dans la mise en œuvre de l'objet de clonage vous ne pouvez pas cloner des objets. Cependant, le compilateur actuel peut en fait en ligne ou même d'optimiser complètement loin le clonage d'objet et envoi de message, de sorte que ces deux endroits pourraient être réécrites en style normal OO auto -. Il est juste que personne n'a encore fait

Tout cela était metacircular machines virtuelles. Il y a aussi d'autres machines virtuelles écrites dans des langues de haut niveau:

  • HotRuby est une machine virtuelle Ruby (en fait, une YARV VM) écrit en JavaScript,
  • Red Sun est une machine virtuelle Ruby (en fait, une YARV VM) écrit en ActionScript,
  • Rava est une machine virtuelle comme VM écrit en Ruby par Koichi "ko1" Sasada, l'auteur de YARV et
  • Ruva est une machine virtuelle comme machine virtuelle écrit en Ruby

Autres conseils

Certaines implémentations plus VM sont en TCL (langage de commande d'outil) et Lua (parfois nommé java) et certains sont écrits dans un assembleur. D'autres variantes sont écrites dans un langage de programmation du système de matériel informatique du fabricant.

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