Différence entre compilateur et assembleur

Auteur: Laura McKinney
Date De Création: 1 Avril 2021
Date De Mise À Jour: 11 Peut 2024
Anonim
Différence entre compilateur et assembleur - La Technologie
Différence entre compilateur et assembleur - La Technologie

Contenu


Compiler and Assembler joue un rôle important dans l'exécution d'un programme. Certains compilateurs génèrent directement le code exécutable au lieu du code assembleur. Le compilateur prend le code source prétraité et le traduit en code assembleur. L'assembleur prend le code d'assemblage du compilateur et le convertit en code machine pouvant être déplacé. Dans cet article, j'ai discuté des différences entre le compilateur et l'assembleur à l'aide du tableau de comparaison ci-dessous.

  1. Tableau de comparaison
  2. Définition
  3. Différences Clés
  4. Conclusion

Tableau de comparaison

Base de comparaisonCompilateur Assembleur
De baseGénère le code de langage d'assemblage ou directement le code exécutable.Génère le code machine déplaçable.
ContributionCode source prétraité.Code de langue de l'assemblage.
Phases / PassesLes phases de compilation sont: analyseur lexical, analyseur de syntaxe, analyseur sémantique, génération de code intermédiaire, optimisation de code, génération de code.L'assembleur effectue deux passes sur l'entrée donnée.
SortieLe code d'assembly généré par le compilateur est une version mnémonique du code machine.Le code machine déplaçable généré par un assembleur est représenté par un code binaire.


Définition du compilateur

le compilateur est un programme informatique qui lit le programme écrit dans une langue source, le traduit en équivalent langage d'assemblage et transmet le code de langue d'assemblage à la Assembleur. Bien que la traduction du code source en code assembleur, le compilateur indique également la Erreur dans le code source à son utilisateur.

Les compilateurs sont également classés comme passe unique, passe multiple, chargement et démarrage, débogage et optimisation. La classification est effectuée sur la base de la fonction exécutée par un compilateur et de la manière dont il a été construit. Malgré ces complexités, la tâche de base du compilateur reste la même.

La compilation est réalisée en deux parties, partie analyse et partie synthèse. le partie analyse divise le code source en éléments constitutifs et forme la représentation intermédiaire du code source. le partie synthèse forme le code cible à partir de la représentation intermédiaire.


La compilation est effectuée dans les phases suivantes:

Analyseur lexical, analyseur de syntaxe, analyseur sémantique, générateur de code intermédiaire, optimiseur de code, générateur de code, table des symboles et gestionnaire d'erreurs.

  • le analyseur lexical lit les caractères du code source et les regroupe dans le flux de jetons. Chaque jeton représente la séquence logique de caractères comme mot clé, identifiants, opérateurs. La séquence de caractères qui forme un jeton s'appelle lexème.
  • le analyseur de syntaxe analyse le jeton obtenu à partir d’un analyseur lexical et de jetons de groupes dans un structure hiérarchique.
  • le analyseur sémantique vérifie le code source pour tout erreur sémantique.
  • Générateur de code intermédiaire génère le représentation intermédiaire du code source
  • le Optimiseur de code optimise le code intermédiaire en un code machine plus rapide.
  • le générateur de code génère finalement le code cible qui est un code machine ou un code d'assemblage.
  • le table des symboles est une structure de données qui contient l'enregistrement pour chaque identifiant dans le code source.
  • Gestionnaire d'erreur détecte l'erreur dans chaque phase et gère ces erreurs.

Définition d'assembleur

Certains compilateurs effectuent la tâche assembleur et génèrent directement un code machine déplaçable au lieu du code assembleur, qui est ensuite transmis directement à l'éditeur de liens / au chargeur. le assembleur prend en entrée le code d'assemblage généré par le compilateur et le traduit en code machine transférable.

Voyons en quoi le code machine est différent du code assembleur. Code d'assemblage est le mnémonique version du code machine. Cela signifie que le code d'assemblage utilise des noms pour représenter les opérations et donne même des noms aux adresses de mémoire. D'autre part, le langage machine les usages codes binaires pour la représentation des opérations et des adresses de mémoire.

Même la forme la plus simple d'assembleur effectue deux passes sur l'entrée. le premier passage détecte tous les identifiants dans le code d'assemblage qui indique l'emplacement de stockage et les stocker dans le table des symboles (autre que la table des symboles des compilateurs). le l'emplacement de stockage est attribué à l'identifiant rencontré lors de la première passe.

dans le deuxième passage, l’entrée est à nouveau numérisée, et cette fois la code d'opération sont traduit dans une séquence de bits représentant cette opération dans le code machine. La seconde passe traduit aussi identifiants dans le adresses défini dans la table des symboles. Ainsi, la seconde passe génère le code machine transférable.

  1. La principale différence entre compilateur et assembleur est que le compilateur génère du code assembleur et certains compilateurs peuvent également générer directement du code exécutable alors que, assembleur génère un code machine déplaçable.
  2. Le compilateur prend en entrée le code prétraité généré par préprocesseur. D'autre part, l'assembleur prend code d'assemblage en entrée.
  3. La compilation se déroule en deux phases qui sont phase d'analyse et phase de synthèse. En phase d’analyse, l’entrée passe par analyseur lexical, analyseur syntaxique, analyseur sémantique alors que l'analyse de synthèse a lieu via générateur de code intermédiaire, optimiseur de code, générateur de code. D'autre part, l'assembleur passe l'entrée à travers deux phases. La première phase détecte les identifiants et leur attribue des adresses. Dans la seconde phase, le code d'assemblage est traduit en code binaire.
  4. Le code assembleur généré par le compilateur est un version mnémonique du code machine. Cependant, le code machine déplaçable généré par l’assembleur est un code relogeable binaire.

Conclusion:

L'assembleur peut ne pas être requis car certains compilateurs génèrent directement du code exécutable. Si assembler est utilisé, l'éditeur de liens doit associer toutes les bibliothèques intégrées aux fonctions de bibliothèque utilisées dans le code source.