Compilateurs C#

王林
王林original
2024-09-03 15:03:031322parcourir

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.

Compilateurs C#

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

Compilateurs C#

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.

Types de compilateur juste à temps

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.

Erreurs d'exécution et erreurs du compilateur

  • Erreurs du compilateur : Ce type d'erreur se produit dans le compilateur C# lui-même. Cela empêche le code C# de se compiler au format .exe. Ces erreurs sont essentiellement dues à une erreur de syntaxe. Lorsque nous avons mal orthographié une syntaxe ou manqué la virgule ou le point-virgule, le compilateur ne l'a pas compris et arrête donc le traitement et renvoie l'erreur de compilation. Nous pouvons voir ces erreurs dans la fenêtre de sortie de l'IDE. Ainsi en examinant ces erreurs nous pouvons rectifier notre code.
  • Erreurs d'exécution : Ce sont des erreurs en temps réel. Ceux-ci se produisent lorsque le code est compilé avec succès mais rencontre des problèmes lors de son exécution. Cela a un impact sur le comportement du code. Par exemple, nous pouvons dire que lorsque nous essayons de diviser un nombre par zéro à ce moment-là, une erreur d’exécution se produit. Ces erreurs sont plus fastidieuses que les erreurs du compilateur car dans ce cas, il faut rectifier le comportement du code.

Compilateurs C#

Type de compilateurs C#

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 :

1. Roslyn

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

  • API de script : Cette couche fournit un contexte d'exécution d'exécution et nous permet d'utiliser C# comme langage de script et n'a aucune dépendance sur les composants de Visual Studio.
  • API du compilateur : Cette couche est utilisée pour la syntaxe et contient des références pour les assemblys et les fichiers de code source. Cette couche n'a également aucune dépendance sur les composants de Visual Studio.
  • API de service : Cette couche fournit IntelliSense, le formatage, Rechercher toutes les références, etc. en haut du SDK. Il aide également à gérer les informations sur le projet et à gérer les dépendances du projet.
  • API Workspace : Cette couche est principalement destinée à l'analyse du code et à la refactorisation via les IDE. Roslyn facilite le code et se compose d'un ensemble d'API comme un compilateur et un service qui fournissent de nombreuses fonctionnalités telles que le formatage, Intellisense, etc. Il prend en charge plusieurs langues. Les API Workspace fournissent des informations détaillées sur le code source.

2. Compilateurs mono

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.

  • mcs : Il prend en charge toutes les fonctionnalités de C# 1.1 telles que les méthodes anonymes, les types nullables, les tampons fixes, les modificateurs d'accès aux propriétés, les classes statiques, etc.
  • gmcs : il prend en charge les fonctionnalités C# 2.0 telles que les expressions de requête, les initialiseurs d'objets, les méthodes partielles, les expressions lambda, les propriétés automatiquement implémentées, etc.
  • dmcs : il prend en charge les fonctionnalités C# 4.0 qui incluent les arguments nommés, la variance de type générique, la liaison dynamique, etc.

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.

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Espaces de noms en C#Article suivant:Espaces de noms en C#