2010-07-18 28 views
2

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?

+0

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

Répondre

6

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.

+1

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. –

+0

@Nick bon point sur le DLR. –

+0

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