Diferència entre compilador i assemblador

Autora: Laura McKinney
Data De La Creació: 1 Abril 2021
Data D’Actualització: 12 Ser Possible 2024
Anonim
Diferència entre compilador i assemblador - Tecnologia
Diferència entre compilador i assemblador - Tecnologia

Content


Compiler i Assembler tenen un paper important en l'execució d'un programa. Alguns compiladors generen directament el codi executable en lloc del codi de muntatge. El compilador agafa el codi font preprocessat i el tradueix al codi de muntatge. L’assemblador agafa el codi de muntatge del compilador i el tradueix al codi de màquina relocable. En aquest article, he discutit les diferències entre compilador i muntador amb l'ajut del gràfic de comparació que es mostra a continuació, només cal fer una ullada.

  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Conclusió

Gràfic de comparació

Bases per a la comparacióCompilador Muntador
BàsicGenera el codi de llenguatge de muntatge o directament el codi executable.Genera el codi de màquina relocat.
EntradaCodi font preprocessat.Codi de llenguatge de muntatge.
Fases / PassesLes fases de compilació són analitzador lèxic, analitzador de sintaxi, analitzador semàntic, generació de codi intermedi, optimització de codi, generació de codis.Assembler fa dos passos sobre l’entrada donada.
SortidaEl codi de muntatge generat pel compilador és una versió mnemònica del codi de màquina.El codi de màquina relacionat generat per un muntador està representat per codi binari.


Definició de Compiler

El compilador és un programa informàtic que llegeix el programa escrit en un idioma font, el tradueix en equivalent llenguatge de muntatge i reenvia el codi de llenguatge de muntatge a Muntador. Si bé la traducció del codi font al codi de muntatge, el compilador també fa informació error al codi font del seu usuari.

Els compiladors també es classifiquen en monopàs, multi-pass, càrrega i sortida, depuració i optimització. La classificació es fa a partir de quina funció realitza un compilador i de quina manera s'ha construït. Malgrat aquestes complexitats, la tasca bàsica del compilador continua essent.

La compilació es realitza en dues parts, part d’anàlisi i part de síntesi. El part d’anàlisi trenca el codi font en peces constituents i forma la representació intermèdia del codi font. El part de síntesi forma el codi de destinació des de la representació intermèdia.


La compilació es realitza en les següents fases:

Analitzador lèxic, analitzador de sintaxi, analitzador semàntic, generador de codi intermedi, optimitzador de codis, generador de codis, taula de símbols i gestor d'errors.

  • El analitzador lèxic llegeix els caràcters del codi font i els agrupa al fitxer corrents de fitxes. Cada testimoni representa la seqüència lògica de caràcters com paraula clau, identificadors, operadors. S'anomena la seqüència de caràcter que forma un testimoni lexema.
  • El analitzador de sintaxi analitza el testimoni obtingut a partir de l’analitzador lèxic i agrupa les fitxes en un estructura jeràrquica.
  • El analitzador semàntic comprova el codi font error semàntic.
  • Generador de codi intermedi genera el representació intermèdia del codi font
  • El Optimitzador de codis optimitza el codi intermedi per obtenir un codi de màquina en funcionament més ràpid.
  • El generador de codi finalment genera el codi de destinació que és un codi de màquina relocalable o codi d'assemblea.
  • El taula de símbols és una estructura de dades que conté el registre per a cada identificador del codi font.
  • Gestor d’errors detecta l'error de cada fase i tracta aquests errors.

Definició de Assembler

Alguns compiladors realitzen la tasca de muntador i generen directament un codi de màquina relocable en lloc del codi de muntatge, que es passa directament a l'enllaçador / carregador. El muntador pren com a entrada el codi de muntatge generat pel compilador i el tradueix codi de màquina relacionable.

Anem a veure com el codi de màquina és diferent del codi de muntatge. Codi de muntatge és el mnemònica versió del codi de màquina. Vol dir que el codi de muntatge utilitza noms per representar operacions i fins i tot dóna nom a les adreces de memòria. D’altra banda, el codi de màquina usos codis binaris per a la representació d’operacions i adreces de memòria.

Fins i tot es realitza la forma més senzilla de muntador dos passis sobre l’entrada. El primer pas detecta tot el identificadors al codi de muntatge que denota la ubicació d'emmagatzematge i emmagatzema-les al fitxer taula de símbols (que no sigui la taula de símbols dels compiladors) El s’assigna la ubicació d’emmagatzematge a l’identificador que es troba a la primera passada.

A la segona passada, es torna a escanejar l'entrada i en aquesta ocasió codi d’operació són traduït en un seqüència de bits que representa aquesta operació en el codi de la màquina. La segona passada també es tradueix identificadors al adreces definit a la taula de símbols. Així, la segona passada genera el codi de màquina relacionable.

  1. La diferència clau entre el compilador i el muntador és que el compilador genera codi de muntatge i alguns compiladors també poden generar directament codi executable mentre que, el muntador genera codi de màquina relacionable.
  2. El compilador pren com a entrada codi preprocessat generat pel preprocessador. D'altra banda, el muntador pren codi de muntatge com a entrada.
  3. La compilació es realitza en dues fases que són fase d’anàlisi i fase de síntesi. A la fase d’anàlisi, l’entrada passa analitzador lèxic, analitzador de sintaxi, analitzador semàntic mentre que, l’anàlisi de síntesi té lloc a través generador de codi intermedi, optimitzador de codi, generador de codi. D'altra banda, el muntador passa l'entrada dues fases. En la primera fase es detecten els identificadors i les adreces d'adreces a la segona fase. El codi de muntatge es tradueix en codi binari.
  4. El codi de muntatge generat pel compilador és a versió mnemònica de codi de màquina. Tanmateix, el codi de màquina relacionat generat pel muntador és un codi binari relacionable.

Conclusió:

Pot ser que el muntador no sigui necessari, ja que alguns compiladors generen directament codi executable. Si s'utilitza el muntador, requereix que el linker enllaixi totes les biblioteques integrades a les funcions de biblioteca que s'utilitzen al codi font.