Rozdiel medzi kompilátorom a zostavovačom

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 10 Smieť 2024
Anonim
Rozdiel medzi kompilátorom a zostavovačom - Technológie
Rozdiel medzi kompilátorom a zostavovačom - Technológie

Obsah


Kompilátor a Assembler zohrávajú dôležitú úlohu pri vykonávaní programu. Niektorí kompilátory priamo generujú spustiteľný kód namiesto kódu zostavy. Kompilátor vezme predspracovaný zdrojový kód a preloží ho do kódu zostavy. Zostavovateľ vezme kód zostavy z kompilátora a prevedie ho do strojového kódu s možnosťou premiestnenia. V tomto článku som diskutoval o rozdieloch medzi kompilátorom a assemblerom pomocou nižšie uvedenej porovnávacej tabuľky, len sa pozrite.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnanieprekladač assembler
základnéGeneruje kód jazyka zostavy alebo priamo spustiteľný kód.Vygeneruje kód stroja, ktorý sa dá premiestniť.
vstupPredspracovaný zdrojový kód.Kód jazyka zostavy.
Fázy / prihrávkyKompilačné fázy sú lexikálny analyzátor, syntaktický analyzátor, sémantický analyzátor, generovanie prechodného kódu, optimalizácia kódu, generovanie kódu.Assembler robí dva prechody cez daný vstup.
VýkonKód zostavy vygenerovaný kompilátorom je mnemotechnická verzia strojového kódu.Premiestniteľný strojový kód generovaný zostavovateľom predstavuje binárny kód.


Definícia prekladača

prekladač je počítačový program, ktorý číta program napísaný v zdrojovom jazyku a prekladá ho do ekvivalentu montážny jazyk a preposiela kód jazyka zostavy do assembler, Kým preklad zdrojového kódu do kódu zostavy kompilátor hlási chyba v zdrojovom kóde jeho používateľovi.

Kompilátory sú tiež klasifikované ako single-pass, multi-pass, load-and-go, ladenie a optimalizácia. Klasifikácia sa vykonáva na základe funkcie, ktorú kompilátor vykonáva a ako bola zostavená. Napriek týmto komplikáciám zostáva základná úloha kompilátora rovnaká.

Kompilácia sa vykonáva v dvoch častiach, analytická časť a syntézna časť, analytická časť rozdeľuje zdrojový kód na jednotlivé časti a vytvára prechodné znázornenie zdrojového kódu. syntézna časť vytvára cieľový kód zo stredného znázornenia.


Zostavovanie sa vykonáva v nasledujúcich fázach:

Lexikálny analyzátor, syntaktický analyzátor, sémantický analyzátor, generátor prechodného kódu, optimalizátor kódu, generátor kódu, tabuľka symbolov a obsluha chýb.

  • lexikálny analyzátor číta znaky zdrojového kódu a zoskupuje ich do toky žetónov, Každý token predstavuje logickú postupnosť znakov kľúčové slovo, identifikátory, operátori, Volá sa postupnosť znakov, ktoré tvoria token Lexom.
  • syntaktický analyzátor analyzuje token získaný z lexikálneho analyzátora a zoskupuje tokeny do a hierarchická štruktúra.
  • sémantický analyzátor skontroluje, či zdrojový kód neobsahuje sémantická chyba.
  • Generátor prechodného kódu generuje stredné zastúpenie zdrojového kódu
  • optimalizátor kódu optimalizuje prechodný kód na rýchlejšie bežiaci strojový kód.
  • generátor kódu nakoniec vygeneruje cieľový kód, ktorým je a premiestniteľný strojový kód alebo kód zostavy.
  • tabuľka symbolov je dátová štruktúra, ktorá obsahuje záznam pre každý identifikátor v zdrojovom kóde.
  • Obsluha chýb detekuje chybu v každej fáze a rieši tieto chyby.

Definícia zostavovateľa

Niektorí kompilátori vykonávajú úlohu zostavovateľa a priamo generujú strojový kód, ktorý je možné premiestniť, namiesto kódu zostavy, ktorý sa ďalej priamo odovzdáva linkerovi / zavádzaču. assembler berie ako vstup kód zostavy vygenerovaný kompilátorom a prevedie ho do premiestniteľný strojový kód.

Pozrime sa, ako sa strojový kód líši od kódu zostavy. Montážny kód je mnemotechnická verzia strojového kódu. Znamená to, že kód zostavy používa názvy na reprezentáciu operácií a dokonca dáva mená na adresy v pamäti. Na druhej strane strojový kód použitie binárne kódy na znázornenie operácií a adries pamäte.

Dokonca aj najjednoduchšia forma assemblera vykonáva dva priechody nad vstupom. prvý priechod detekuje všetky identifikátory v kóde montáže, ktorý označuje miesto uloženia a uloží ich do tabuľka symbolov (iné ako tabuľka symbolov kompilátorov). je priradené úložné miesto k identifikátoru, ktorý sa vyskytuje pri prvom prechode.

V druhý priechod, vstup sa znova naskenuje a tentoraz prevádzkový kódpreložené do a postupnosť bitov predstavuje túto operáciu v strojovom kóde. Druhý priechod sa tiež prekladá identifikátory do adresy definované v tabuľke symbolov. Druhý priechod teda vytvára premiestniteľný strojový kód.

  1. Kľúčový rozdiel medzi kompilátorom a assemblerom je, že prekladač generuje kód zostavy a niektoré kompilátory môžu tiež priamo generovať spustiteľný kód, zatiaľ čo assembler generuje premiestniteľný strojový kód.
  2. Kompilátor berie ako vstup predspracovaný kód generované preprocesorom. Na druhú stranu, montážnik berie montážny kód ako vstup.
  3. Zostavovanie prebieha v dvoch fázach fáza analýzy a fáza syntézy, Vo fáze analýzy vstup prechádza lexikálny analyzátor, syntaktický analyzátor, sémantický analyzátor zatiaľ čo syntézna analýza sa uskutočňuje prostredníctvom generátor pomocného kódu, optimalizátor kódu, generátor kódu, Na druhej strane, assembler prechádza vstupom dve fázy, Prvá fáza deteguje identifikátory a pridelí im adresy v druhej fáze, keď je kód zostavy preložený do binárneho kódu.
  4. Kód zostavy vygenerovaný kompilátorom je a mnemotechnická verzia strojového kódu. Premiestniteľný strojový kód generovaný zostavovateľom je však binárny kód, ktorý je možné premiestniť.

záver:

Zostavovač nemusí byť potrebný, pretože niektorí kompilátori priamo generujú spustiteľný kód. Ak sa používa assembler, vyžaduje linker na prepojenie všetkých vstavaných knižníc s funkciami knižnice, ktoré sa používajú v zdrojovom kóde.