Razlika između sastavljača i assemblera

Autor: Laura McKinney
Datum Stvaranja: 1 Travanj 2021
Datum Ažuriranja: 11 Svibanj 2024
Anonim
Univer ili medijapan?
Video: Univer ili medijapan?

Sadržaj


Sastavljač i assembler igraju važnu ulogu u izvođenju programa. Neki prevoditelji izravno generiraju izvršni kod umjesto kôda za montažu. Kompajler uzima unaprijed obrađen izvorni kod i prevodi ga u sklopni kod. Sastavljač uzima sklopni kod od prevoditelja i prevodi ga u strojni kod koji se može premjestiti. U ovom sam članku raspravljao o razlikama između prevoditelja i alata za sastavljanje pomoću grafikona za usporedbu, prikazanih dolje, samo pogledajte.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedbukompajler Asembler
Osnovni, temeljniGenerira kôd jezika montaže ili izravno izvršni kod.Generira šifru stroja koja se može premjestiti.
UlazniPrethodno obrađeni izvorni kod.Kôd jezika skupštine.
Faze / prolaziFaze kompilacije su leksički analizator, analizator sintakse, semantički analizator, generiranje intermedijarnog koda, optimizacija koda, stvaranje koda.Assembler vrši dva prolaza preko danog ulaza.
IzlazMontažni kôd generiran od strane prevoditelja je mnemonička inačica strojnog koda.Stroj za pomicanje koji se može premjestiti generira sastavljač predstavljen je binarnim kodom.


Definicija sastavljača

kompajler je računalni program koji čita program napisan izvornim jezikom, prevodi ga u ekvivalent jezik montaže i prosljeđuje kod jezika montaže na Asembler, Iako je prijevod izvornog koda u skupni kod, prevoditelj također izvještava greška u izvornom kodu svom korisniku.

Sastavljači su također klasificirani kao single-pass, multi-pass, load-and-go, uklanjanje pogrešaka i optimizacija. Klasifikacija se vrši na temelju funkcije koju kompajler obavlja i kako je konstruirana. Unatoč tim složenostima, osnovni zadatak prevoditelja ostaje isti.

Kompilacija se izvodi u dva dijela, dio analize i sintezni dio, dio analize razbija izvorni kod na sastavne dijelove i tvori intermedijarni prikaz izvornog koda. sintezni dio tvori ciljni kod iz međupredmetnog predstavljanja.


Kompilacija se vrši u sljedećim fazama:

Leksički analizator, analizator sintakse, semantički analizator, generator srednjeg koda, alat za optimizaciju koda, generator koda, tablica simbola i alat za upravljanje pogreškama.

  • leksički analizator čita znakove izvornog koda i grupira ih u struje tokena, Svaki token predstavlja logički slijed znakova poput ključna riječ, identifikatori, operatori, Pozvan je slijed znakova koji tvori token leksem.
  • analizator sintakse raščlanjuje token dobiven od leksičkog analizatora i grupira oznake u a hijerarhijska struktura.
  • semantički analizator provjerava izvorni kod za bilo koji semantička greška.
  • Generator srednjeg koda generira posredni prikaz izvornog koda
  • alat za optimizaciju koda optimizira srednji kôd u brži stroj.
  • generator koda napokon generira ciljni kod koji je pomični kod stroja ili kôd za montažu.
  • tablica simbola je podatkovna struktura koja sadrži zapis za svaki identifikator u izvornom kodu.
  • Alat za upravljanje pogreškama otkriva pogrešku u svakoj fazi i obrađuje te pogreške.

Definicija Assemblera

Neki prevoditelji izvršavaju zadatak alata za sklapanje i izravno generiraju stropni kod koji se može premjestiti umjesto koda za montažu, a koji se nadalje izravno prosljeđuje na linker / loader. asembler kao ulaz uzima kod za sklapanje koji generira prevoditelj i prevodi ga u pomični kod stroja.

Pogledajmo kako se strojni kod razlikuje od koda montaže. Kod montaže je mnemonički verzija strojnog koda. To znači da kod za sklapanje koristi imena za predstavljanje operacija i čak daje imena memorijskim adresama. S druge strane strojni kod namjene binarni kodovi za prikaz operacija i memorijskih adresa.

Izvodi čak i najjednostavniji oblik alata za sastavljanje dva prolaza preko ulaza. prvi prolaz detektira sve identifikatori u kodu za sklapanje koji označava mjesto spremanja i sprema ih u tablica simbola (osim tablice simbola prevoditelja). dodijeljeno je mjesto pohrane na identifikator koji se susreće u prvom prolazu.

U drugi prolaz, ulaz se ponovno skenira, a ovoga puta operativni kod su preveo u a slijed bitova predstavljajući tu operaciju u kodu stroja. Drugi prolaz također prevodi identifikatori u adrese definirano u tablici simbola. Tako drugi prolaz generira pomični kod stroja.

  1. Ključna razlika između prevoditelja i sastavljača je da je kompajler generira skupni kôd, a neki prevoditelji također mogu izravno generirati izvršni kod, a, asembler generira šifrirani strojni kod.
  2. Kompilator uzima kao ulazni unaprijed obrađeni kod generiran pretprocesorom. S druge strane, montažer uzima kod montaže kao ulaz.
  3. Kompilacija se odvija u dvije faze koje su faza analize i faza sinteze, U fazi analize unos prolazi leksički analizator, sintaksički analizator, semantički analizator dok se analiza sinteze odvija putem generator srednjeg koda, alat za optimizaciju koda, generator koda, S druge strane, montažer prolazi ulaz dvije faze, Prva faza otkriva identifikatore i dodjeljuje im adrese, a u drugoj fazi skupni kod se prevodi u binarni kod.
  4. Sklopni kôd koji generira prevoditelj je a mnemonička verzija strojne šifre. Međutim, strojni kod koji se može premještati generirati alata za montažu je binarni kôd za preseljenje.

Zaključak:

Montaž možda neće biti potreban, jer neki prevoditelji izravno generiraju izvršni kôd. Ako se koristi alata za sastavljanje, potreban je veznik za povezivanje svih ugrađenih knjižnica s funkcijama knjižnice koje se koriste u izvornom kodu.