Asembler protiv kompajlera
Općenito, kompajler je računalni program koji čita program napisan na jednom jeziku, koji se naziva izvorni jezik, i prevodi ga na drugi jezik, koji se naziva ciljni jezik. Tradicionalno je izvorni jezik bio jezik visoke razine kao što je C++, a ciljni jezik bio je jezik niske razine kao što je asemblerski jezik. Međutim, postoje prevoditelji koji mogu pretvoriti izvorni program napisan u asemblerskom jeziku i pretvoriti ga u strojni kod ili objektni kod. Asembleri su takvi alati. Dakle, i asembleri i kompajleri u konačnici proizvode kod koji se može izravno izvršiti na stroju.
Što je kompajler?
Prevodilac je računalni program koji čita program napisan na jednom jeziku, koji se naziva izvorni jezik, i prevodi ga na drugi jezik, koji se naziva ciljni jezik. Najčešće je izvorni jezik jezik visoke razine, a ciljni jezik je jezik niske razine. Dakle, općenito se prevoditelji mogu promatrati kao prevoditelji koji prevode s jednog jezika na drugi. Osim toga, prevoditelji izvode neke optimizacije koda. Tipični prevodilac sastoji se od nekoliko glavnih komponenti. Prva komponenta je skener (poznat i kao leksički analizator). Scanner čita program i pretvara ga u niz tokena. Druga komponenta je parser. Pretvara niz tokena u stablo analize (ili apstraktno sintaksno stablo), koje bilježi sintaktičku strukturu programa. Sljedeća komponenta su semantičke rutine koje tumače semantiku sintaktičke strukture. Nakon toga slijedi optimizacija koda i konačno generiranje koda.
Što je asembler?
Assembler je softver ili alat koji prevodi asemblerski jezik u strojni kod. Dakle, asembler je vrsta prevoditelja i izvorni kod je napisan u asemblerskom jeziku. Asembler je čovjeku čitljiv jezik, ali obično ima odnos jedan prema jedan s odgovarajućim strojnim kodom. Stoga se za asembler kaže da izvodi izomorfno (preslikavanje jedan na jedan) prevođenje. Napredni asembleri pružaju dodatne značajke koje podržavaju razvoj programa i procese otklanjanja pogrešaka. Na primjer, vrsta asemblera koji se nazivaju makro asembleri pružaju mogućnost makroa.
Koja je razlika između asemblera i prevoditelja?
Prevodilac je računalni program koji čita program napisan na jednom jeziku i prevodi ga na drugi jezik, dok se asembler može smatrati posebnom vrstom prevoditelja koji prevodi samo asemblerski jezik u strojni kod. Prevoditelji obično proizvode strojno izvršni kod izravno iz jezika visoke razine, ali asembleri proizvode objektni kod koji se možda mora povezati pomoću programa povezivanja kako bi se izvodio na stroju. Budući da asemblerski jezik ima preslikavanje jedan na jedan sa strojnim kodom, asembler se može koristiti za proizvodnju koda koji radi vrlo učinkovito u prilikama u kojima je izvedba vrlo važna (za npr. grafičke motore, ugrađene sustave s ograničenim hardverskim resursima u usporedbi s osobnim računalom poput mikrovalnih pećnica, perilica rublja itd.).