Razlika između sastavljača i assemblera
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.
- Usporedni grafikon
- definicija
- Ključne razlike
- Zaključak
Usporedni grafikon
Osnove za usporedbu | kompajler | Asembler |
---|---|---|
Osnovni, temeljni | Generira kôd jezika montaže ili izravno izvršni kod. | Generira šifru stroja koja se može premjestiti. |
Ulazni | Prethodno obrađeni izvorni kod. | Kôd jezika skupštine. |
Faze / prolazi | Faze 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. |
Izlaz | Montaž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.
- 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.
- Kompilator uzima kao ulazni unaprijed obrađeni kod generiran pretprocesorom. S druge strane, montažer uzima kod montaže kao ulaz.
- 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.
- 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.