Assembler vs kompilaator
Üldiselt on kompilaator arvutiprogramm, mis loeb ühes keeles kirjutatud programmi, mida nimetatakse lähtekeeleks, ja tõlgib selle teise keelde, mida nimetatakse sihtkeeleks. Traditsiooniliselt oli lähtekeel kõrgetasemeline keel (nt C++) ja sihtkeel madalatasemeline keel (nt assamblee keel). Siiski on kompilaatoreid, mis suudavad teisendada Assembly keeles kirjutatud lähteprogrammi ja teisendada selle masinkoodiks või objektkoodiks. Assemblers on sellised tööriistad. Nii koostajad kui ka kompilaatorid toodavad lõpuks koodi, mida saab masinas otse käivitada.
Mis on kompilaator?
Compiler on arvutiprogramm, mis loeb ühes keeles kirjutatud programmi, mida nimetatakse lähtekeeleks, ja tõlgib selle teise keelde, mida nimetatakse sihtkeeleks. Kõige sagedamini on lähtekeel kõrgetasemeline keel ja sihtkeel madala taseme keel. Seega võib koostajaid üldiselt vaadelda kui tõlkijaid, kes tõlgivad ühest keelest teise. Lisaks teostavad kompilaatorid koodi mõningaid optimeerimisi. Tüüpiline kompilaator koosneb mitmest põhikomponendist. Esimene komponent on skanner (tuntud ka kui leksikaalanalüsaator). Skänner loeb programmi ja teisendab selle žetoonide jadaks. Teine komponent on parser. See teisendab märkide stringi parsipuuks (või abstraktseks süntaksipuuks), mis jäädvustab programmi süntaktilise struktuuri. Järgmine komponent on semantilised rutiinid, mis tõlgendavad süntaktilise struktuuri semantikat. Sellele järgnevad koodi optimeerimised ja lõplik koodi genereerimine.
Mis on monteerija?
Assembler on tarkvara või tööriist, mis tõlgib koostekeele masinkoodiks. Seega on assembler teatud tüüpi kompilaator ja lähtekood on kirjutatud assembly keeles. Assembly on inimesele loetav keel, kuid tavaliselt on sellel üks ühele seos vastava masinkoodiga. Seetõttu väidetakse, et assembler teostab isomorfset (üks ühele vastendus) tõlget. Täiustatud komplekteerijad pakuvad lisafunktsioone, mis toetavad programmide arendus- ja silumisprotsesse. Näiteks makrokoostajateks nimetatavad monteerijad pakuvad makrovõimalust.
Mis vahe on assembleril ja kompilaatoril?
Compiler on arvutiprogramm, mis loeb ühes keeles kirjutatud programmi ja tõlgib selle teise keelde, samas kui assemblerit võib pidada kompilaatori eritüübiks, mis tõlgib masinkoodiks ainult koostekeele. Kompilaatorid toodavad tavaliselt masinas käivitatava koodi otse kõrgetasemelisest keelest, kuid komplekteerijad toodavad objektikoodi, mis võib-olla tuleb masinas töötamiseks linkerprogrammide abil linkida. Kuna assembly keelel on masinkoodiga üks ühele vastendus, võib assemblerit kasutada väga tõhus alt töötava koodi loomiseks olukordades, kus jõudlus on väga oluline (nt graafikamootorid, manustatud süsteemid, mille riistvararessurss on võrreldes personaalarvutiga piiratud nagu mikrolaineahjud, pesumasinad jne).