Assembler vs Compiler
Uopšteno govoreći, kompajler je kompjuterski program koji čita program napisan na jednom jeziku, koji se zove izvorni jezik, i prevodi ga na drugi jezik, koji se naziva ciljni jezik. Tradicionalno, izvorni jezik je bio jezik visokog nivoa kao što je C++, a ciljni jezik jezik niskog nivoa kao što je jezik asemblera. Međutim, postoje prevodioci koji mogu da konvertuju izvorni program napisan u asemblerskom jeziku i konvertuju ga u mašinski ili objektni kod. Asembleri su takvi alati. Dakle, i asembleri i kompajleri na kraju proizvode kod koji se može direktno izvršiti na mašini.
Šta je kompajler?
Kompajler je kompjuterski program koji čita program napisan na jednom jeziku, koji se zove izvorni jezik, i prevodi ga na drugi jezik, koji se naziva ciljni jezik. Najčešće je izvorni jezik jezik visokog nivoa, a ciljni jezik niskog nivoa. Dakle, generalno se prevodioci mogu posmatrati kao prevodioci koji prevode sa jednog jezika na drugi. Osim toga, prevodioci izvode neke optimizacije koda. Tipičan kompajler se sastoji od nekoliko glavnih komponenti. Prva komponenta je skener (također poznat kao leksički analizator). Skener čita program i pretvara ga u niz tokena. Druga komponenta je parser. Konvertuje niz tokena u stablo raščlanjivanja (ili apstraktno stablo sintakse), koje hvata sintaksičku strukturu programa. Sljedeća komponenta su semantičke rutine koje tumače semantiku sintaksičke strukture. Optimizacije koda i konačna generacija koda slijede ovo.
Šta je asembler?
Assembler je softver ili alat koji prevodi asemblerski jezik u mašinski kod. Dakle, asembler je vrsta kompajlera i izvorni kod je napisan u asemblerskom jeziku. Asembler je jezik čitljiv ljudima, ali obično ima odnos jedan na jedan sa odgovarajućim mašinskim kodom. Stoga se kaže da asembler izvodi izomorfno (mapiranje jedan na jedan) translaciju. Napredni asembleri pružaju dodatne funkcije koje podržavaju razvoj programa i procese otklanjanja grešaka. Na primjer, tip asemblera koji se zove makro asembleri pruža mogućnost makroa.
Koja je razlika između asemblera i kompajlera?
Kompajler je kompjuterski program koji čita program napisan na jednom jeziku i prevodi ga na drugi jezik, dok se asembler može smatrati posebnom vrstom kompajlera koji prevodi samo asemblerski jezik u mašinski kod. Kompajleri obično proizvode izvršni strojni kod direktno iz jezika visokog nivoa, ali asembleri proizvode objektni kod koji će možda morati biti povezan pomoću programa za povezivanje da bi se mogao pokrenuti na stroju. Budući da asemblerski jezik ima mapiranje jedan na jedan sa mašinskim kodom, asembler se može koristiti za proizvodnju koda koji radi veoma efikasno u situacijama u kojima su performanse veoma važne (na primer, grafičke mašine, ugrađeni sistemi sa ograničenim hardverskim resursima u poređenju sa personalnim računarom kao mikrotalasne pećnice, mašine za pranje veša itd.).