La machine virtuelle .NET compile-t-elle le bytecode CIL (puis exécute le code au niveau le plus bas - assembleur de CPU), ou est-ce un interpréteur (qui lit les instructions suivantes et les exécute)?Est-ce que .NET VM est un compilateur ou un interpréteur?
Répondre
Est-ce que la machine virtuelle de .NET Compile le bytecode CIL (puis exécuter le code au niveau le plus bas - assembleur CPU)
Oui, il est un composant du CLR appelé JIT (Compilation juste-à-temps) qui convertit le code de langue intermédiaire (émis par le compilateur du langage de programmation) en un code machine.
Il n'y a pas d'interpréteur comme dans les langages dynamiques tels que Ruby, PHP, Python.
MISE À JOUR:
Comme indiqué dans les commentaires de Craver depuis l'@ Nick ajout du DLR en .Net 4 apporte la possibilité d'utiliser les concepts de langage dynamique dans le CLR.
Je ne suis pas sûr de la deuxième partie de la réponse, puisque l'ajout du DLR dans .Net 4, je pourrais me tromper ... mais je pense que cette déclaration a besoin de quelques mises en garde. –
@Nick bon point sur le DLR. –
Le framework .NET et l'infrastructure .NET Compact effectuent la compilation JIT. Le framework .NET Micro utilise cependant une interprétation (http://en.wikipedia.org/wiki/.NET_Micro_Framework). – Steven
Je pose une question similaire à propos de Java Virtual Machine. Il semble que cela puisse être l'un ou l'autre, ou même les deux. – umlcat