Un Complier C# peut être défini comme un composant intégré utilisé pour transformer le code programmé C# en un code de langage lisible par machine, qui renvoie les fichiers de sortie sous la forme de fichiers .dll ou de fichiers .exe. C# propose deux types différents de méthodes de compilation, à savoir la compilation Common Language Runtime (CLR) et la compilation juste à temps (JIT). Les compilateurs JIT sont en outre classés en compilateur Pre JIT, compilateur Normal JIT et compilateur Econo JIT. Quelques-uns des outils couramment utilisés à ces fins de compilation sont le compilateur C# 2.0, le compilateur C# 3.5, le compilateur C# 4.x, les compilateurs Roslyn et Mono.
Ainsi, après la génération du langage intermédiaire, nous avons dû convertir cet IL en codes machine, car le processeur ne comprenait que les codes machine. Nous avons donc utilisé CLR (Common Language Runtime) pour cette conversion. CLR est un programme qui s'exécute sur l'ordinateur et modifie le code IL en codes machine à l'aide du Just-In-Time (communément appelé JIT). Lorsque nous double-cliquons sur le fichier .exe, le compilateur JIT est invoqué et compile le code IL à ce moment-là, c'est pourquoi il est nommé JUST-IN-TIME(JIT).
La compilation peut être effectuée implicitement ou explicitement. La compilation implicite est une compilation double dans laquelle d'abord, elle est compilée IS et ensuite, elle est compilée en langage machine. Ce processus est appelé compilation JIT ou compilation JUST-In-Time. JIT prend en charge plusieurs plates-formes et accélère l'exécution du code.
Il existe trois compilateurs juste-à-temps différents
1. Compilateur pré-JIT
Dans ce compilateur, il n'y a qu'un seul processus de compilation car tout le code source est compilé dans le code natif.
2. Compilateur JIT normal
Dans ce compilateur, seules ces méthodes sont compilées en code machine, ce qui est requis au moment de l'exécution. Le compilateur compile ces méthodes, les stocke dans le cache et utilise à nouveau la même méthode.
3. Compilateur Econo JIT
Dans ce compilateur, seules les méthodes sont compilées en code machine requis au moment de l'exécution, mais ces méthodes sont supprimées si elles ne sont pas requises. Dans JIT, seule la méthode requise est compilée au moment de l'exécution, elle nécessite donc moins d'utilisation de mémoire.
Dans le schéma ci-dessus
1 à 3 étapes seront exécutées au moment de la compilation
3 à 5 étapes seront exécutées au moment de l'exécution.
Ainsi, lorsque nous exécutons ces deux types d'erreurs, des erreurs se produisent.
Les anciens compilateurs Microsoft étaient nommés .Net Framework comme le compilateur C# 2.0, le compilateur C# 3.5, le compilateur C# 4.x, etc. Ces compilateurs n'ont pas été écrits en C# ou nous pouvons dire que C# n'a pas été compilé par C#. Les autres compilateurs qui ont vu le jour après cela sont :
Auparavant, le compilateur était écrit en C/C++. Roslyn est un compilateur .Net open source dans lequel le code C++ est remplacé. Il récupère les types d'éléments dans le code, leurs relations les uns avec les autres. Lorsque les équipes C# et VB ont écrit le compilateur, des modèles Visual Studio sont donc disponibles pour les deux. Cela nous permet d'écrire du code qui analyse un fichier source et il nous est facile de modifier le code source.
Voici les quatre couches API de Roslyn
Compilateur Mono C# basé sur les standards ECMA pour C#. Il existe plusieurs versions avec un framework comme C# 1.0, 2.0, 3.0, 4.0. Le compilateur mono mcs cible le framework 1.1, gmcs cible le framework 2.0 tandis que smcs et dmcs ciblent respectivement le framework 2.1 et 4.0.
L'autre compilateur comme le compilateur RemObjects C# qui suit la norme C# selon la spécification EMCA et à part cela, il existe des compilateurs GNU C# qui implémentent C# et .Net.
Le compilateur C# est comme n'importe quel autre compilateur qui compile le code en code machine afin que le processeur puisse comprendre le processus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!